我在 zsh 中有以下循环:
for x in my_folders*;
do
rsync -adrv $x/foo/bar/ /foo2/bar2/new_dir/$x/
done
Run Code Online (Sandbox Code Playgroud)
new_dir
在调用 之前不存在rsync
,我想rsync
创建它,以及复制操作所需的所有其他内容。
我正在传递rsync
标志d
,r
但它抱怨:
rsync: mkdir "/foo2/bar2/new_dir/item1" failed: No such file or directory (2)
Run Code Online (Sandbox Code Playgroud)
它显然假设文件夹/foo2/bar2/new_dir/$x/
在复制之前就存在,而事实并非如此。有了这个:
查看rsync
手册页,我没有看到您的方案的选项。但是如何在开始同步之前手动添加目录,从而避免您的问题?
for x in my_folders*;
do
mkdir -p "/foo2/bar2/new_dir/$x"
rsync -adrv "$x/foo/bar/" "/foo2/bar2/new_dir/$x/"
done
Run Code Online (Sandbox Code Playgroud)