如何将文件rsync到不存在的远程目录?

How do I rsync a file to a remote directory that doesn't exist?

假设我想在本地机器上rsync文件foo.txt以在远程计算机上归档/home/me/somedirectory/bar.txt,而somedirectory/还不存在。我该怎么做?

我试过rsync -e ssh -z foo.txt remotemachine:/home/me/somedirectory/bar.txt,但我发现一个rsync: push_dir#3"/home/me/somedirectory" failed: No such file or directory (2)错误。

(不过,复制文件而不重命名它是有效的。也就是说,它运行得很好:rsync-e ssh-z foo.txt remotemachine:/home/me/somedirectory/`)


在你的目标目录上加上一个斜线。像这样:

rsync foo.txt远程计算机:somedirectory/

假设远程机器上的home目录是"/home/me",则无需在命令行中指定它。另外,除非你只是想这样做,否则你不需要把rsync和-e弄乱。


您可以通过两个步骤成功完成此过程:

1]EDOCX1[0]这将复制foo.txt并在目的地创建目录somedirectory

然后

2]rsync -e ssh -z --delete-after foo.txt remotemachine:/home/me/somedirectory/bar.txt

在这里,您可以使用--delete-after选项删除目的地上的foo.txt。你可以从手册页上看到它的用法。此选项必须与-r选项一起使用这符合你的目的。

或者如果第二个命令不起作用,则使用-rsync -e ssh -z foo.txt remotemachine:/home/me/somedirectory/bar.txt手动删除foo.txt。