Linux

如何僅將失去的文件從源文件夾移動到目標文件夾

  • January 1, 2018

閱讀和閱讀所有內容已經花費了很多小時……測試 rsync、Grsync 和 Unison……沒有希望!在兩個本地文件夾之間 rsync 複製/同步文件的正常方法是“複製整個文件夾本身!-而不是想像中的內容!-沒有別的!

為了進行實驗,我在同一個根目錄下創建了兩個名稱不同的文件夾。當得到這個結果時,我將它們分開,並給源與目標相同的名稱,以防這是原因。

rsync 在兩個本地文件夾之間複製/同步文件的正常方式

rsync -zrahvWnt --delete-after ~/Documents/test3/source-DRV ~/Documents/test3/dest-T

我還在 Unison 中使用了所有可能的選項.. 沒有希望!結果一樣!

“解決有利於第一個根的衝突”“從右向左傳播”“從右向左”

沒有一個工作不同!都給出了相同的結果:將“整個”文件夾複製到另一個文件夾“內部”!

我想要的基本上很簡單:

  1. 檢查源中目標中失去的文件。
  2. 移動 - 最好,但複製是可以的
  3. 只失去從源到目標文件夾的文件。
  4. 對大小、日期相同且在兩個文件夾中找到的文件不執行任何操作。

這將導致一個“完整文件夾” - 作為目標,以及一個作為源的“無用文件夾”,手動刪除沒有問題。

使 rsync “最好”移動的所需方法 - 不複製 - 唯一失去的文件和文件夾從源到目標

$$ Edit: $$在實施解決方案時,我發現我使用了 -n 選項,這使得“空執行”..這可能是沒有任何效果的另一個原因。我刪除了它,一切都按預期進行!

如果我正確理解您的意圖,您需要做的就是在您的第一個參數後面附加一個斜杠rsync。也就是說,而不是寫

rsync -zrahvWt --remove-source-files ~/Documents/test3/source-DRV ~/Documents/test3/dest-T

rsync -zrahvWt --remove-source-files ~/Documents/test3/source-DRV/ ~/Documents/test3/dest-T

編輯 我已經根據 OP 關於回答他/她自己的問題的評論修改了上述命令。

關於參數rsync

  • -z:在傳輸過程中壓縮文件數據
  • -r:遞歸:複製目前文件夾下的文件夾及其文件,而不僅僅是目前文件夾下的文件
  • -a:保留幾乎所有內容(日期、權限等)
  • -h:以人類可讀的格式輸出數字
  • -v:詳細:在螢幕上列印更多的程序細節
  • -W:複製整個文件,不只更新數據的差異。

更多細節可以通過執行找到man 1 rsync

引用自:https://unix.stackexchange.com/questions/413577