如何從 SRC 同步到 DEST,驗證 DEST 文件,然後刪除 SRC 文件? (遞歸地)

如何從 SRC 同步到 DEST,驗證 DEST 文件,然後刪除 SRC 文件? (遞歸地)

我的 bash 腳本中有兩個目錄由這兩個變數保存

$SRC

$DEST


我該怎麼做rsync

  1. 將檔案從 $SRC/ 複製到 $DEST/,
  2. 驗證 $DEST/* 檔案是否與 $SRC/ 檔案相符(可用的最佳匹配,但速度很慢)
  3. 然後刪除$SRC/檔案?

我谷歌搜尋的所有內容都給出了執行 rsync 然後刪除 DEST 檔案的範例。

我不明白這一點,為什麼要執行rsync到目標目錄,然後刪除它?

做一個谷歌搜索,看看我的意思。

答案1

所以移動文件的選項是--remove-source-files。這裡是手冊頁,並在此處查看一些討論: https://unix.stackexchange.com/questions/43957/using-rsync-to-move-not-copy-files- Between-directories

請注意,rsync 始終使用校驗和來驗證文件,但這取決於您是否足以滿足您的擔憂。值得注意的是,來自目標的校驗和是在傳輸時計算的,而不是在寫入磁碟後計算的,因此它不是根據結果檔案計算的,而且您不會遇到失敗,除非寫入時操作系統出現錯誤。這裡有一些討論: https://unix.stackexchange.com/questions/30970/does-rsync-verify-files-copied- Between-two-local-drives

如果這不足以滿足您的需求,請考慮編寫腳本來 rsync 文件而不刪除來源,再次執行 rsync 以-c選擇/複製與校驗和不匹配的文件,然後最後刪除來源檔案rm或其他內容。

答案2

rsync這應該是s--remove-source-files選項的直接使用

rsync --dry-run --stats -av --remove-source-files "$SRC/" "$DEST/"

當您高興該命令將執行您認為它應該執行的操作時,請刪除--dry-run(也許)。--stats

相關內容