Linux Rsync如何包含目录而不是文件?
我有一个目录结构和这样的文件Linux Rsync如何包含目录而不是文件?,linux,backup,rsync,Linux,Backup,Rsync,我有一个目录结构和这样的文件 data/ data/a.txt data/folder/ data/folder/b.txt data/folder/folder/ data/folder/folder/c.txt ... a.txt、b.txt和c.txt都是由计算机生成并频繁更新的大型文件。不应该备份它们--但我想备份目录结构: data/ data/folder/ data/folder/folder/ 如何使用rsync和--exclude from实现这一点,而不指定每个文件夹,但
data/
data/a.txt
data/folder/
data/folder/b.txt
data/folder/folder/
data/folder/folder/c.txt
...
a.txt
、b.txt
和c.txt
都是由计算机生成并频繁更新的大型文件。不应该备份它们--但我想备份目录结构:
data/
data/folder/
data/folder/folder/
如何使用rsync和--exclude from实现这一点,而不指定每个文件夹,但类似于rsync-a data/*--exclude from=exclude.rsync”“--onlyfoldersandnotfiles”“
谢谢你的帮助
$ rsync -a -f"+ */" -f"- *" source/ destination/
两个-f参数分别表示“复制所有目录”和“不复制任何其他内容”
进一步详情:
基本上,首先包括所有目录,然后排除所有文件。如果要同步除一个文件夹外的所有内容,但仍要保留该排除文件夹的目录结构,则应执行以下操作:
$ rsync -a -f"+ /var/log/**/*/" -f"- /var/log/**/*" source/ destination/
以和为例
rsync -a -f"-! */" source/ destination/
过滤规则的意思是“排除任何非目录的内容。”这是一个非常出色的解决方案。比将
--include
和--exclude
组合起来用于基本用途要简单得多。IMHO这更具可读性:rsync-a--include='*/'--exclude='*'源/目标/
@SteveBennett include和exclude只是过滤器+和-。他们怎么可能更可靠呢?这不是同一个问题吗?@roaima是的,我准确地把Steve的评论作为一个答案发布了出来,因为我同意他的观点,这样做比那些奇怪的-f“±
参数更具可读性。@Nikanareklawiks谢谢你把这作为一个单独的答案
rsync -a -f"-! */" source/ destination/