在Linux中,使用SFTP(Secure File Transfer Protocol)進行批量文件傳輸可以通過幾種不同的方法實現。以下是一些常用的方法:
mput
命令如果你已經通過SFTP連接到遠程服務器,可以使用mput
命令來批量上傳文件。首先,你需要將要上傳的文件放在本地的一個目錄中,然后使用以下命令:
mput /path/to/local/directory/*
這將會上傳本地目錄中的所有文件到遠程服務器的當前工作目錄。
scp
命令雖然scp
不是SFTP客戶端,但它可以在Linux中用于安全地復制文件和目錄。你可以使用-r
選項來遞歸復制整個目錄,并且可以使用通配符來選擇多個文件:
scp -r /path/to/local/directory/* user@remotehost:/path/to/remote/directory/
這將會遞歸地復制本地目錄中的所有文件到遠程服務器的指定目錄。
rsync
命令rsync
是一個非常強大的文件傳輸工具,它可以在本地和遠程之間同步文件。使用-avz
選項可以以歸檔模式傳輸文件,同時保持文件的權限、時間戳等信息,并且可以壓縮數據以減少傳輸時間:
rsync -avz /path/to/local/directory/* user@remotehost:/path/to/remote/directory/
如果你想要刪除遠程目錄中存在而本地目錄中不存在的文件,可以添加--delete
選項:
rsync -avz --delete /path/to/local/directory/* user@remotehost:/path/to/remote/directory/
你可以編寫一個簡單的shell腳本來自動化批量文件傳輸的過程。例如:
#!/bin/bash
# 設置本地和遠程目錄
local_dir="/path/to/local/directory"
remote_dir="/path/to/remote/directory"
user="user"
host="remotehost"
# 連接到遠程服務器并上傳文件
sftp $user@$host <<EOF
cd $remote_dir
mput $local_dir/*
bye
EOF
保存這個腳本為upload.sh
,然后通過運行chmod +x upload.sh
使其可執行,最后通過./upload.sh
執行腳本。
rsync
時,如果你不希望刪除遠程目錄中多余的文件,可以省略--delete
選項。選擇哪種方法取決于你的具體需求和個人偏好。如果你需要簡單的文件傳輸,mput
可能就足夠了。如果你需要更多的控制和靈活性,rsync
可能是更好的選擇。