rsync 从根文件夹中排除单个文件

rsync 从根文件夹中排除单个文件

我想从包含以下内容的文件夹进行 rsync索引.php(需要排除),并且许多其他目录也包含 index.php。我创建了一个排除文件并在那里添加了 index.php。但是所有 index.php 文件都消失了。有没有适当的方法可以避免同步唯一的文件?

答案1

rsync 使用相对于根 rsync 文件夹的目录。你应该能够使用类似

rsync -aAX ./ ../target --exclude=/index.php

/”表示根目录。

答案2

过滤--exclude器的工作原理如下:

  • 如果模式不以斜杠开头,那么它会在路径的末尾(树中的任何位置)匹配。

    --exclude myfile.txt匹配任何调用的myfile.txt文件任何目录。

    --exclude logs/myfile.txtmyfile.txt里面有火柴任何目录名为logs

  • 如果模式以斜线开头,则它将锚定到传输文件的根目录

    要确定传输文件的根目录,请删除来源小路。

    例如,在下面的 rsync 命令中,源路径是/srv/files/something,因此传输的根是/srv/files/

    rsync -a /srv/files/something host:/backup/files/
    

    因此,要排除源文件,/srv/files/logs/myfile.txt您可以使用--exclude /logs/myfile.txt,其中排除模式开头的斜杠指的是传输的根,其根源位于/srv/files/(在源上)。

相关内容