2012-06-14 88 views
2

如何才能rsync鏡像* .php文件?這也給了我一大堆空樽,我不想要這些。rsync only * .php文件

rsync -v -aze 'ssh ' \ 
--numeric-ids \ 
--delete \ 
--include '*/' \ 
--exclude '*' \ 
--include '*.php' \ 
[email protected]:/home/www/domain.com \ 
/Volumes/Servers/ 
+0

沒有我的回答解決問題了嗎? –

+1

訣竅是還將'--prune-empty-dirs \'添加到參數列表中 – Poe

回答

4

這裏的罪魁禍首是

--include '*/' 

當包含一個通配符後面尾隨正斜槓你告訴rsync的轉讓以「/」(也就是結尾的所有文件,所有目錄)。
因此,

rsync -v -aze 'ssh ' \ 
--numeric-ids \ 
--delete \ 
--exclude '*' \ 
--include '*.php' \ 
[email protected]:/home/www/domain.com \ 
/Volumes/Servers/ 

如果您使用的是因爲你打算遞歸找到所有.php文件,你必須使用通配符**。 也就是說, --include '**/*.php'

另一種方式(http://www.commandlinefu.com/commands/view/1481/rsync-find)被發現前的目標文件,然後使用rsync,

find source -name "*.php" -print0 | rsync -av --files-from=- --from0 ./ ./destination/ 
+0

rsync命令排除了所有文件,因此沒有任何內容被傳輸。我想我所做的就是使用我嘗試過的原始塊,並在完成後運行find命令刪除所有空文件夾。 – Poe

+1

是的,全部的'exclude'應該在'include'之後。 –