rsync only * .php文件

问题描述:

如何才能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

这里的罪魁祸首是

--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'之后。 –