仅rsync*.php文件

Poe*_*Poe 2 rsync

我怎样才能rsync镜像*.php文件?这给了我一堆空的dirs,我不想要那些.

rsync -v -aze 'ssh ' \
--numeric-ids \
--delete \
--include '*/' \
--exclude '*' \
--include '*.php' \
user@site.com:/home/www/domain.com \
/Volumes/Servers/
Run Code Online (Sandbox Code Playgroud)

Joa*_*edo 5

这里的罪魁祸首是

--include '*/'  
Run Code Online (Sandbox Code Playgroud)

当包含一个通配符后跟尾随正斜杠时,你告诉rsync传输所有以'/'结尾的文件(即所有目录).
从而,

rsync -v -aze 'ssh ' \
--numeric-ids \
--delete \
--exclude '*' \
--include '*.php' \
user@site.com:/home/www/domain.com \
/Volumes/Servers/
Run Code Online (Sandbox Code Playgroud)

如果您正在使用它,因为您打算以递归方式查找所有.php文件,则必须使用**通配符.那是, --include '**/*.php'

另一种方式(http://www.commandlinefu.com/commands/view/1481/rsync-find)预先找到目标文件,然后使用rsync,

find source -name "*.php" -print0 | rsync -av --files-from=- --from0 ./ ./destination/
Run Code Online (Sandbox Code Playgroud)

  • 是的,所有"排除"都应该在"包含"之后. (2认同)