Synchronization

僅當目標文件存在並且僅當比目標文件更新時才遞歸複製目錄

  • October 23, 2021

我們如何僅當文件在目標上存在並且僅當它比目標上新時才複製文件和/或目錄,並且對於目錄情況,它必須遞歸複製具有以下

能力

$ ls -a ~/.config
gtk-2.0/             
gtk-3.0/
SpeedCrunch/

$ ls -a /other/path/home/.config/
gtk-2.0/             
gtk-3.0/
SpeedCrunch/


$ rsync -u --existing ~/.config /other/path/home/
skipping directory .

不能工作。

什麼 Linux 實用程序以及如何做/解決它?之前謝謝

快的:

您忘記包含遞歸開關 “-r” :

rsync -u --existing -r ~/.config /other/path/home/

額外的東西:

此外,除了保留一些重要屬性外,您還可以考慮使用-a等於的 switch-rlptgoD來包含遞歸,如下所示:

  • -r:遞歸到目錄
  • -l:將符號連結複製為符號連結
  • -p:保留權限
  • -t:保留修改時間
  • -g:保留組
  • -o:保留所有者(僅限超級使用者)
  • -D:保留與–devices –specials相同的特殊文件

使用以下方法進行測試:

mkdir src
touch src/file{1..3}
touch src/thefile
# Destination:
mkdir dst
touch dst/file{1..3}
touch -d 20201023 dst/thefile
# List all
free -D src dst

現在試試:

rsync -rt -uPv --existing src dst/

我用了:

  • -r:遞歸到目錄
  • -t:保留修改時間
  • -u:跳過接收器上較新的文件
  • -P:在傳輸過程中顯示進度
  • -v:增加詳細程度
  • –existing:跳過在接收器上創建新文件

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