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
我正在尝试使用 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