我们希望将旧服务器的内容迁移到新服务器,但我们不想复制所有内容,而是希望排除任何具有.swf文件在其中。我们知道该--exclude
标志,但它只会排除文件,而不是父目录(及其内容),如果有.swf文件
如果使用 rsync 无法完成此操作,那么在这种情况下,我们是否可以使用 bash 脚本将文件从一台服务器复制到另一台服务器?
答案1
您可以生成包含 *.swf 文件的目录列表,然后将该列表转换为 rsync 的排除文件。
例如
find /path/to/topdir/ -iname '*.swf' -printf "%h\n" |
sort -u |
sed -e 's/^/- /; s:$:/**:' > rsync-exclude.txt
输出将如下所示,可以与 rsync--exclude-from=FILE
选项一起使用:
- /path/to/topdir/directory1/**
- /path/to/topdir/directory2/**
- /path/to/topdir/directory3/**
- /path/to/topdir/directory5/subdir1/**
请注意,rsync 的包含和排除选项可能很难掌握,它们的工作方式与 glob 或正则表达式不同。您需要先练习--dry-run
和 ,--verbose
直到您得到完全正确的模式。