3

如何仅 rsync 镜像 *.php 文件?这也给了我一堆空的目录,我不想要那些。

rsync -v -aze 'ssh ' \
--numeric-ids \
--delete \
--include '*/' \
--exclude '*' \
--include '*.php' \
user@site.com:/home/www/domain.com \
/Volumes/Servers/
4

1 回答 1

6

这里的罪魁祸首是

--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/
于 2012-06-14T08:55:59.367 回答