SCP 僅傳輸修改過的文件

SCP 僅傳輸修改過的文件

我正在使用下面的命令跨伺服器傳輸文件

scp -rc blowfish /source/directory/* [email protected]:/destination/directory

update有沒有辦法像指令一樣只傳輸修改過的檔案cp

答案1

rsync是你的朋友。

rsync -ru /source/directory/* [email protected]:/destination/directory

如果您希望它刪除目標中不再存在於來源中的文件,請新增該--delete選項。

答案2

一般來說,人們要求 scp 是有原因的。即無法在目標上安裝 rsyncd。

files=`find . -newermt "-3600 secs"`

for file in $files
do
       sshpass -p "" scp "$file" "root@$IP://usr/local/www/current/$file"
done

答案3

另外一個選擇:

remote_sum=$(ssh ${remote} sha256sum ${dest_filename})
remote_sum=${remote_sum%% *}
local_sum=$(sha256sum ${local_filename})
local_sum=${local_sum%% *}
if [[ ${local_sum} != ${remote_sum} ]]; then
  scp ${local_filename} ${remote}:${remote_filename}
fi

這對於一個檔案來說還可以,但對於大量檔案來說會有點慢,這取決於 SSH 重複連接的速度。如果您在 SSH 連線上設定了 controlmasters,那可能還不錯。如果您需要遞歸複製一段目錄樹,您可以執行一個 SSH 指令,對所有檔案進行求和,將結果推入 bash 關聯數組,在本機上執行相同操作,然後比較檔案總和來決定是否做副本。但幾乎​​可以肯定的是,在遠端安裝 rsync 會更容易。

相關內容