unix rsync命令出现错误No such file or directory(2)(没有这样的文件或目录)

krcsximq  于 2022-11-04  发布在  Unix
关注(0)|答案(1)|浏览(1035)

我正在尝试使用远程桌面中的传输文件,这将在远程桌面中创建指定的目录树。我正在使用下面的命令,但当远程服务器中不存在目录时,该命令不起作用。

rsync -avzhe ssh --progress /root/BP/temp/temp.txt root@host2:/root/BP/temp2

其中/root/BP/temp/temp.txt在本地可用,但/root/BP/temp2此路径在远程服务器中不存在。
我收到以下错误:

rsync: change_dir#3 "/root/BP" failed: No such file or directory (2)
rsync error: errors selecting input/output files, dirs (code 3) at main.c(625) [Receiver=3.0.9]
rsync: connection unexpectedly closed (9 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
mbjcgjjk

mbjcgjjk1#

如果需要将文件移动到远程服务器上不存在的路径,则必须执行以下操作之一:

  • 在本地对路径和文件结构进行建模,并同步一个公共的“祖先”。
  • 这只需要1个步骤
  • 在本地创建缺少的目录并首先同步它们,然后同步文件。
  • 这需要2个步骤

要使用OP的特定示例:

rsync -avzhe ssh --progress /root/BP/temp/temp.txt root@host2:/root/BP/temp2

您可以改为执行:


# assuming that /root already exists on the remote server

mkdir -p /root/BP/temp/or_wherever/BP/temp2
mv /root/BP/temp/temp.txt /root/BP/temp/or_wherever/BP/temp2
rsync -avzhe ssh --progress /root/BP/temp/or_wherever/BP root@host2:/root/

但是,如果由于某种原因无法移动相关文件,则必须使用第二个选项:


# assuming that /root already exists on the remote server

mkdir -p /root/BP/temp/or_wherever/BP/temp2

# Notice there is no `/` after the       `or_wherever/BP` in the next command

rsync -avzhe ssh --progress /root/BP/temp/or_wherever/BP root@host2:/root/
rsync -avzhe ssh --progress /root/BP/temp/temp.txt root@host2:/root/BP/temp2/

相关问题