Rsync 包含文件夹内容但排除父文件夹

Rsync 包含文件夹内容但排除父文件夹

我在网上搜索但没有找到答案......我试图在目的地达到这个结果

Media_Files
    Web
        Print

我的源文件是

Media_Files
    Assets
        Web
            Print

如何排除、删除、删除或过滤文件Assets夹但保留Web/Print文件夹使用rsync?谢谢

答案1

您需要分两步执行此操作:

  1. 复制除 之外的所有内容Media_Files/Assets(假设 下还有其他内容Media_Files)。
  2. 复制Media_Files/Assets/Web

第一步可以通过以下方式完成

rsync -av --exclude=/Assets/ Media_Files/ destination

这将(详细地)递归地将Madia_Files目录(包括权限和其他元数据)复制到destination,制作destination的副本(删除源路径上的Media_Files尾随以创建)。/destination/Media_Files

由于排除模式,Assets直接位于其下的目录将被忽略。Media_Files/Assets/

第二步可以通过以下方式完成

rysync -av Media_Files/Assets/Web destination

/源路径末尾缺少意味着Web将被放入其中destination

Media_Files/Assets如果除此之外您还需要复制其他文件或目录Web,请改用

rsync -av Media_Files/Assets/ destination

这会将所有内容Media_Files/Assets(包括Web目录及其内容)直接复制到destination.


您可以执行以下两个步骤:

  1. destination一个精确的的副本Media_Files,包括Media_Files/Assets.
  2. destination/Assets手动移动您想要移入destination并删除的内容destination/Assets

简而言之:

rsync -av Media_Files/ destination
mv -i destination/Assets/* destination
rmdir destination/Assets

最后两个命令将被修改为仅移动destination/Assets您想要保留的内容(例如destination/Assets/Web),并删除其余内容(这里我假设您想要移动所有可见文件和目录,并且这使Assets子目录完全为空)。

答案2

您可以使用以下命令来实现结果

rsync -azvP Media_Files/资产/Web Media_Files/

相关内容