我怎样才能rsync镜像* .php文件?这给了我一堆空的dirs,我不想要那些。
rsync -v -aze 'ssh ' \
--numeric-ids \
--delete \
--include '*/' \
--exclude '*' \
--include '*.php' \
user@site.com:/home/www/domain.com \
/Volumes/Servers/
答案 0 :(得分:5)
这里的罪魁祸首是
--include '*/'
当包含一个通配符后跟尾随正斜杠时,你告诉rsync传输所有以'/'结尾的文件(即所有目录)。
因此,
rsync -v -aze 'ssh ' \
--numeric-ids \
--delete \
--exclude '*' \
--include '*.php' \
user@site.com:/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/