关于linux:Rsync如何包含目录但不包含文件?

Rsync how to include directories but not files?

我有这样的目录结构和文件

1
2
3
4
5
6
7
data/
data/a.txt
data/folder/
data/folder/b.txt
data/folder/folder/
data/folder/folder/c.txt
...

a.txtb.txtc.txt是计算机生成并经常更新的大文件。不应该备份它们——但我要备份目录结构:

1
2
3
data/
data/folder/
data/folder/folder/

如何使用rsync和--exclude进行此操作,而不指定每个文件夹,但类似于rsync -a data/* --exclude-from=exclude.rsync"" --onlyfoldersandnotfiles""

谢谢你的帮助!


1
$ rsync -a -f"+ */" -f"- *" source/ destination/

这两个-f参数分别表示"复制所有目录"和"不复制任何其他内容"。

更多详细信息:http://psung.blogspot.com/2008/05/copying-directory-trees-with-rsync.html


1
rsync -a --include='*/' --exclude='*' source/ destination/

基本上,首先包括所有目录,然后排除所有文件。


如果要同步除一个文件夹以外的所有内容,但仍要保留该排除文件夹的目录结构,则应执行以下操作:

1
$ rsync -a -f"+ /var/log/**/*/" -f"- /var/log/**/*" source/ destination/

以排除列表和rsync命令为例。