Rsync

rsync 仍然在排除中復製文件夾

  • December 14, 2021

我正在嘗試複製一個文件夾並排除兩個子目錄,但 rsync 不斷複製排除中的目錄。

rsync -savzPh -e "ssh -p 237"  --include '*/' --include '*.pdf' --include '*.PDF' --exclude '*' --exclude 'a1' --exclude 'my archive2' user@ip:"/home/path/my folder" .

原始碼如下所示:

  • /home/path/我的文件夾/folder1
  • /home/path/我的文件夾/folder2
  • /home/path/我的文件夾/a1
  • /home/path/我的文件夾/a2
  • /home/path/我的文件夾/我的存檔
  • /home/path/我的文件夾/我的存檔2

exclude 參數中文件夾中的 pdf 文件仍在被複製。

你知道我做錯了什麼嗎?

Rsync 將根據第一次匹配解析包含/排除規則。在您的情況下,包含規則在有機會解析“排除”規則之前匹配“排除”文件夾(“a1”和“我的存檔 2”)。

所以在這種情況下,您需要以不同的方式訂購包含/排除標誌。

如果你想複製“我的文件夾”的全部內容,不包括“a1”和“我的存檔2”子目錄,那麼這應該是你的命令:

rsync -savzPh -e "ssh -p 237" --exclude 'a1' --exclude 'my archive2' user@ip:"/home/path/my folder" .

如果您只想要該目錄結構中的 PDF 文件(不包括“a1”和“my archive2”),請嘗試以下結構:

rsync -savzPh -e "ssh -p 237"  --exclude 'a1' --exclude 'my archive2' --include '*.pdf' --include '*.PDF' --include '*/' --exclude '*' user@ip:"/home/path/my folder" .

請注意,在第二個版本中,您首先排除文件夾,從而跳過這些文件夾,然後包含 PDF 副檔名和子目錄(否則,由於最後一條規則,它將跳過所有子目錄),最後排除所有內容(其他)

嘗試將“包含”規則視為“不排除的內容”,但順序相反。

用 rsync 3.2.3 測試

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