【问题标题】:Rsync how to include directories but not files?Rsync如何包含目录但不包含文件?
【发布时间】:2011-04-02 12:56:53
【问题描述】:

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

data/
data/a.txt
data/folder/
data/folder/b.txt
data/folder/folder/
data/folder/folder/c.txt
...

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

data/
data/folder/
data/folder/folder/

如何在不指定每个文件夹的情况下使用 rsync 和 --exclude-from 执行此操作,但要指定 rsync -a data/* --exclude-from=exclude.rsync "" --onlyfoldersandnotfiles"" 之类的内容?

感谢您的帮助!

【问题讨论】:

    标签: linux backup rsync


    【解决方案1】:
    rsync -a -f"-! */" source/ destination/
    

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

    【讨论】:

      【解决方案2】:

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

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

      exclude-listthe rsync command 为例。

      【讨论】:

        【解决方案3】:
        rsync -a --include='*/' --exclude='*' source/ destination/
        

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

        【讨论】:

        • 这不是和this other answer一样吗?
        • @roaima 是的,我准确地发布了史蒂夫的评论作为答案,因为我同意他的观点,这种方式比那些奇怪的 -f"± 论点更具可读性。
        • @NikanaReklawyks 感谢您将此作为单独的答案
        【解决方案4】:
        $ rsync -a -f"+ */" -f"- *" source/ destination/
        

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

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

        【讨论】:

        • 一个非常出色的解决方案。比将--include--exclude 组合用于基本用途要简单得多。
        • 恕我直言,这更具可读性:rsync -a --include='*/' --exclude='*' source/ destination/
        • @SteveBennett include 和 exclude 只是过滤器 + 和 - 的同义词。他们怎么可能更可靠?
        • @YaroslavNikitenko “可读”而不是“可靠”。
        猜你喜欢
        • 2012-04-14
        • 1970-01-01
        • 1970-01-01
        • 2023-04-07
        • 2020-05-13
        • 1970-01-01
        • 1970-01-01
        • 2022-07-06
        相关资源
        最近更新 更多