2017-01-05 66 views
-1

我想腳本rsync快速複製OSx上的一個目錄中的文件。我遇到了包含和排除選項的問題。比如我想複製的目錄是:Rsync包括,排除和過濾

$HOME/Library/Dir1/RandomDir/cache/ 

我最初使用rsync只同步緩存目錄,但OSX沒有使用的源路徑通配符。我用的命令是:

rsync -avP "$HOME/Library/Dir1/*/cache/" Dest/Dir 

當我將運行此命令OSX無法找到目錄,因爲它一直在尋找方向1的文字穿插/ * /和*不被視爲一個通配符。

然後我試着實現--include和--exclude選項,但是我一直無法得到這個工作。

我用

rsync -avP --include="*/" --include="cache/" --exclude"*" $HOME/Library/Dir1/ Dest/Dir/ 

當我運行此命令時,它並不只複製緩存目錄。這是我的理解,rsync實現包含和排除它們進入的順序,所以我的邏輯是,rsync將包括Dir1目錄下的所有內容(處理通配符問題),然後只包含緩存目錄,然後它會排除其他一切。我想使用rsync來保存複製文件屬性和時間戳的歸檔功能。

任何人都可以告訴我我哪裏錯了嗎?我已經嘗試了幾個變種的命令 - 例如--include =「/cache」和--exclude =「/*」,但顯然沒有任何工作到目前爲止。任何幫助都非常感謝。謝謝。

+0

您是從腳本,Automator腳本還是從控制檯執行rsync?控制檯應正確擴展'$ HOME/Library/Dir1/*/cache /'部分,但Automator可能不是。 – Janek

+0

謝謝。我不認爲我在使用Automator,但我並不真正熟悉它。我創建了一個bash腳本,併爲文件指定了.com和文件擴展名。當您在OSx中單擊它時,它會打開一個終端窗口並運行該命令。這會使用Automator嗎? – user7376266

回答

0

我終於找到我的問題所在。我有雙引號的源代碼目錄,因此將*解釋爲文字...無論如何。