Rsync - 如何包含文件路径的特定部分

Rsync - How to Include Specific Parts of File Path

我正在尝试使用 Rsync 过滤器来控制文件结构在我的目标位置的显示方式。我已经通读了其他 SE 问题并咨询了 Google,但仍然遇到问题。

例如,我有以下文件结构:

/home/donglecow/images/123/001/image.jpg
/home/donglecow/images/123/002/image.jpg
/home/donglecow/images/456/001/image.jpg
/home/donglecow/images/456/002/image.jpg

当运行 Rsync时,我想复制这个确切的结构:images/123/001/image.jpg,首先省略/home/donglecow/

完成此工作后,我想递归地复制 images 下的所有内容。我遇到的问题是它只复制最后一个目录及其内容,例如:001/image.jpg

我使用的命令是:rsync -avvvrz --exclude='/home/donglecow/' --include='images/*' /home/donglecow/images/123/001/ /home/donglecow/rsyncDestination.

我最终得到:/home/donglecow/rsyncDestination/001/image.jpg,但想要 /home/donglecow/rsyncDestination/images/123/001/image.jpg

我哪里错了?

您需要使用 --relative (-R) 参数。这将创建中间目录。

编辑:

如果您不想要“/home/donglecow/”,您需要从该目录运行 rsync。例如:

cd /home/donglecow
rsync -aRvvvrz --exclude='*/images/' --include='images/*' images/123/001/ /home/donglecow/rsyncDestination