Rsync
如何使用 rsync 強制所有 *.jar 文件匹配?
我有一個目錄,裡面有很多文件。我唯一關心的是那些有副檔名的
.jar
。但是,目錄中還有其他文件。我有一個只有
.jar
文件的源目錄。我想達到相當於:rm destdir/*.jar cp sourcedir/*.jar destdir
但是,如果它們已經是正確的文件,我想這樣做而不實際刪除已經存在的文件。
換句話說,我希望可以執行一個命令:
.jar
對於存在sourcedir
但不在 中的任何文件destdir
,請將它們複製過來。- 對於和中存在的任何
.jar
文件,請確保 in中的副本與副本中的副本匹配,如果不匹配則覆蓋它。sourcedir``destdir``destdir``sourcedir
- 對於
.jar
存在destdir
但不在中的任何文件sourcedir
,請刪除該文件。- 對於其中存在的任何其他文件
destdir
(沒有.jar
副檔名),請忽略它們——不要刪除或更改它們。似乎這應該是可能的
rsync
。我怎樣才能做到這一點?
您可以使用:
rsync -av --include='*.jar' --exclude='*' --delete \ sourcedir/ destdir/
該
-a
選項是存檔模式,它保留連結和時間戳等內容(查看man
頁面以獲取完整說明)。-v
用於冗長,如果您不關心日誌,請刪除。那應該處理你的前三個選項。該
--delete
選項將滿足您的第四個要求,同時忽略排除的文件。如果您希望包含包含
.jar
文件的目錄,您可以使用rsync -av --include='*.jar' --include='*/' --exclude='*' --delete \ sourcedir/ destdir/
根據此處的答案,如果您還有其他問題,它應該對您有所幫助:Rsync 過濾器:僅複製一種模式