rsync 抛出 mkdir:无法创建目录‘/data/dir_1/dir_2/dir_3/’:没有这样的文件或目录

rsync 抛出 mkdir:无法创建目录‘/data/dir_1/dir_2/dir_3/’:没有这样的文件或目录

我在 处安装了一个磁盘/data。目前它是空的。

我需要rsync执行mkdir -pmkdir因为我需要处于第 4 级的文件,即/data/dir_1/dir_2/dir_3/filenamedir_1dir_2dir_3不存在时。

如果我手动创建所需的子目录,我可以使用以下命令执行 rsync:

rsync -avz source_diretory/ /data/dir_1/dir_2/dir_3

但是如果我不创建子目录,此命令将引发错误:

mkdir: cannot create directory ‘/data/dir_1/dir_2/dir_3/’: No such file or directory

我尝试使用 Google 搜索,阅读 rsync 的手册页,尝试使用-r -R,但无法使其工作。

可以rsync执行类似的操作mkdir -p还是超出其范围?

答案1

rsync命令不会创建目录树,因此您可以通过执行以下操作来执行此操作:

 mkdir -p /data/dir_1/dir_2/dir_3

rsync在命令或使用之前–rsync路径选项:

--rsync-path=PROGRAM 使用它来指定在远程机器上运行什么程序来启动 rsync。

你的命令应该是:

 rsync -avz source_diretory/ --rsync-path="mkdir -p /data/dir_1/dir_2/dir_3 && rsync" /data/dir_1/dir_2/dir_3

这是一个有用的关联

答案2

在 Linux 中创建 rsync 目标路径的更简便方法是使用 '$_' 特殊变量。(我认为,但无法确认,在 OSX 中也是一样)。

'$_' 保存前一个执行命令的最后一个参数的值。因此,这个问题可以这样回答:

mkdir -p /data/dir_1/dir_2/dir_3 && rsync -avz source_directory/ $_

相关内容