我有以下树,其中f
文件src
和d
目录(f
可以隐藏或不隐藏):
src/f1
src/f2
...
src/d1
src/d2
src/d3
...
我想在dst
文件夹中复制相同的结构,但排除文件夹中存在的所有文件src
(即上面树中的f1
、等,但不是、和其他文件夹f2
的内容)。换句话说,我只想复制文件夹及其所有内容(文件、文件夹、链接、设备等)。d1
d2
d3
src
dst
我必须使用rsync
并且最好只使用一个--exclude-from
文件(但rsync
欢迎使用任何其他方式)。
我试图放入/*
排除文件,因为/
它允许我定位src
并*
表示“匹配除斜杠 ( ) 之外的所有内容/
”,但结果是一个空dst
文件夹。
非常感谢
人 rsync 说:
所以,试试
rsync -avr -f"+ */" -f"- *" /src/ /dest/
-f"+ */"
将添加目录,何时-f"- *"
将删除所有文件。正如@Kusalananda 所说,这将避免所有子树中的任何文件。
rsync -avr -f"+ */" -f"- /*" /src/ /dest/
或者rsync -avr --include="*/" --exclude="/*" /src/ /dest/
将同步树子目录中的文件。用works排除源目录下的所有内容
/*
,只需要重新包含目录即可:--exclude='/*'
排除源目录中的所有文件/目录--include='/*/'
覆盖排除并再次包含源目录中的目录,必须在排除之前写入-a
存档模式,快捷方式-rlptgoD
-r
递归到目录-l
将符号链接复制为符号链接-p
保留权限-t
保留修改时间-g
保留组-o
保留所有者(仅限超级用户)-D
保留设备文件(仅限超级用户)/特殊文件-v
增加冗长