无法很好地理解 Rsync 的包含和排除模式

无法很好地理解 Rsync 的包含和排除模式

首先,我确实阅读了很多有关这个主题的内容(包括Rsync 过滤器:仅复制一种模式),但我还是不明白,或者我的安装有问题......

我的结构“from”是这样的:

Windows
Users
  User1
    Documents
      doc1.txt
      doc2.txt
    AppData
    Downloads
  User2
    Documents
      doc3.txt
      doc4.txt
    AppData
    Downloads

我想备份所有用户的所有文档文件夹和子文件夹,但不备份 AppData 和下载结构。

关于我想要的目的地:

Users
 User1
  Documents
   doc1.txt
   doc2.txt
 User2
  Documents
   doc3.txt
   doc4.txt

我确实尝试了很多模式,但没有一个效果很好。让我们从这个开始:

rsync -av --include="*/" --exclude="*/AppData" --exclude="*/Downloads" /source/Users /destination

我应该怎么做才能排除每个用户的 AppData 和 Downloads 文件夹及子文件夹?

谢谢

还有另一个线程讨论几乎相同的事情(如果我很好理解的话): rsync 与绝对路径并排除子路径

我根据我的情况调整了答案,但应用程序数据和下载仍然存在于目标路径上。

rsync -av --no-p  --include="*/" --include="*/Documents/**" --exclude="** /source/Users /destination

答案1

在许多 shell 中*不包含/符号(而不是前面.)(请参阅人 7 球globstar| )dotglob中的选项shopt,所以如果你想排除应用程序数据下载你应该提供完整路径来源( --exclude="*/*/AppData" --exclude="*/*/Downloads") 或仅保留名称 ( --exclude="AppData" --exclude="Downloads") 如果目录位于哪一层并不重要。

rsync -av --exclude="AppData" --exclude="Downloads" /source/Users /destination

相关内容