2016-05-12 30 views
1

我需要rsync從一臺機器到另一臺機器的一些目錄,但只有一部分樹。我認爲解釋它的最簡單方法是在服務器上運行tree -f(它打印每個文件的完整路徑),然後在完整路徑上運行mon,並且僅運行grep的匹配。其實我很樂意這樣做,但我沒有shell訪問服務器,只有rsync。基於grep輸出rsync --list-only的兩步解決方案是完全可以接受的。如何正確地與rsync匹配的目錄

它實際上是比較簡單的,因爲我也知道這週一出現作爲後綴到一個目錄(層次結構是非常剛性的),所以我試圖做

rsync --dry-run -vrlpt --include='*/' --include='**/*mon/' --exclude='*' --prune-empty-dirs

但不匹配任何東西。代替--include='*mon/'代替雙星號。避免--prune-empty-dirs匹配所有的目錄,但沒有文件,我認爲這是我的問題。所以我試圖在排除模式之前添加一些文件擴展名的包含模式(我寧願不這樣做,因爲我不想跟蹤它們並且它們可能會改變),但是它僅僅匹配所有這些文件,包括那些不在「星期一」樹上的人。

是的,我確實看到了thisthisthis和無數其他人,這讓我取得一些進展(例如,你可以看到上面的),但沒有解決問題...

回答

0

類似於下面的東西在第二種情況下,這項工作(即問題是與週一之後的任何情況相匹配)包括:

rsync -arvm --include='*/' --include='*mon/***' --exclude='*' /path/to/source /path/to/dest