rsync --files-from指定文件夹但不复制文件,递归不修复

rsync --files-from指定文件夹但不复制文件,递归不修复

我最近重新审视了几年前维护的一个脚本,并尝试让它在新服务器上运行。

它基本上运行以下内容

rsync -vaP --copy-unsafe-links --files-from=dirlist.txt --exclude-from=excludelist.txt . /path/to/backup

dirlist.txt 是一个纯文本文件,其中包含我想要同步的文件的目录.

foo/
foo/bar
foo/bar/gop
foo/tra
foo/bla
foo/bla/rgh
foo/bla/rgh/meh

并且 excludelist.txt 是一个纯文本文件,其中包含我想要从 rsync 命令中排除的上述目录中的特定文件的路径。

当我运行上述操作时,我得到了

/path/to/backup/foo
/path/to/backup/foo/bar
/path/to/backup/foo/bar/gop
/path/to/backup/foo/tra
/path/to/backup/foo/bla
/path/to/backup/foo/bla/rgh
/path/to/backup/foo/bla/rgh/meh

但是源目录中的文件都没有被复制过去吗?

我尝试使用该命令,但是当它运行 rsync 时,-r最终得到了我不想要的目录foo/don或复制的目录。foo/tcofoo/

我知道这个脚本在过去已经运行过,所以我很困惑到底发生了什么变化(除了可能的 rsync 版本,但我无法追踪我上次运行的版本)。

更新:我使用的是 rsync 2.5.7 到 2.6.6 的不同版本。2.5.7 版本没有 --files-from 和 --Filter

答案1

不久前我遇到过类似的问题。

我的解决方案是选择如下过滤规则:

rsync --archive -r --filter="merge fromfile" --dry-run

fromfile
- /el[2-4]*
- "*/ppc/*"
+ /el5
- /*

这将排除任何名为 ppc 的子目录、任何顶级目录 el2、el3、el4,包括 el5,并排除其他所有内容。

相关内容