Rsync如何包含目录而不包含文件?

chi*_*ama 24 linux backup rsync

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

data/
data/a.txt
data/folder/
data/folder/b.txt
data/folder/folder/
data/folder/folder/c.txt
...
Run Code Online (Sandbox Code Playgroud)

a.txt,, b.txtc.txt是由计算机生成并经常更新的大型文件.它们不应该被备份 - 但我想备份目录结构:

data/
data/folder/
data/folder/folder/
Run Code Online (Sandbox Code Playgroud)

如何使用rsync和--exclude-from,而不指定每个文件夹,但是类似的东西rsync -a data/* --exclude-from=exclude.rsync "" --onlyfoldersandnotfiles""

感谢帮助 !

lui*_*son 29

$ rsync -a -f"+ */" -f"- *" source/ destination/
Run Code Online (Sandbox Code Playgroud)

"两个-f参数分别表示"复制所有目录",然后"不复制任何其他内容"."

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

  • 恕我直言,这更具可读性:`rsync -a --include ='*/' - exclude ='*'source/destination /` (28认同)

Nik*_*yks 22

rsync -a --include='*/' --exclude='*' source/ destination/
Run Code Online (Sandbox Code Playgroud)

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

  • @roaima 是的,我准确地发布了史蒂夫的评论作为答案,因为我同意他的观点,这种方式比那些奇怪的“-f”±“参数更具可读性。 (2认同)

小智 5

rsync -a -f"-! */" source/ destination/
Run Code Online (Sandbox Code Playgroud)

过滤规则的意思是“排除不是目录的任何内容”。