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/
答
这里的罪魁祸首是
--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'之后。 –
没有我的回答解决问题了吗? –
诀窍是还将'--prune-empty-dirs \'添加到参数列表中 – Poe