Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Rsync如何包含目录而不是文件?_Linux_Backup_Rsync - Fatal编程技术网

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/