linux 如何RSYNC单个文件?

hgtggwj0  于 2023-01-04  发布在  Linux
关注(0)|答案(4)|浏览(204)

目前,我只对Directories进行RSync,如下所示:

* * * * * rsync -avz /var/www/public_html/images root@<remote-ip>:/var/www/public_html

那么,我如何rsync一个单一的文件一样,/var/www/public_html/.htaccess

92dk7w1h

92dk7w1h1#

您可以使用与目录相同的方法来执行此操作,但需要指定文件名的完整路径作为源。在您的示例中:

rsync -avz   --status=progress  /var/www/public_html/.htaccess root@<remote-ip>:/var/www/public_html/

评论中提到:由于-a包含 recurse,一个小的错误就可能导致整个目录树的传输,因此更简单的方法可能是使用-vz,或者用-lptgoD替换它。

sg2wtvxw

sg2wtvxw2#

基本语法

rsync options source destination

示例

rsync -az /var/www/public_html/filename root@<remote-ip>:/var/www/public_html

Read more

yi0zb3m4

yi0zb3m43#

如果相对于源文件和目标文件的根目录,文件路径中的所有目录都已经存在,那么Michael Place的答案就非常有效。
但如果您想同步具有以下源路径的文件,该怎么办:

  • /源根目录/a/B/文件 *

到具有以下目标路径的文件:

  • /目标根目录/a/B/文件 *

而目录 aB 不存在
您需要运行如下所示的rsync命令:

rsync -r --include="/a/" --include="/a/b/" --include="/a/b/file" --exclude="*" [source] [target]
emeijp43

emeijp434#

到目前为止,两个答案是不太正确的,他们会得到一个以上的文件,另一个是不简单的,因为它可以,这里有一个更简单的答案海事组织。
下面的代码只得到一个文件,但是你必须用mkdir创建dest目录,这可能是最快的选择:

mkdir -p ./local/path/to/file
rsync user@remote:/remote/path/to/file/ -zarv --include "filename" --exclude "*" ./local/path/to/file/

如果/remote/path中只有一个文件示例,那么rsync可以为你创建目录,如果你执行以下操作的话。这可能会花费更多的时间,因为它会搜索更多的目录。另外,它会为/remote/path中不在./local中的目录创建空目录

cd ./local
rsync user@remote:/remote/path -zarv --include "*/" --include "filename" --exclude "*" .

请记住--include和--exclude的顺序很重要。

相关问题