我有一个关于 rsync 的问题。我有两台服务器。我想在服务器 1 上运行 rsync 命令,将服务器 2 上的所有数据/文件同步到我的服务器。假设我在服务器 2 上有一个文件夹 /var/www/html/hello/* 所有文件都应使用从服务器 2 到服务器 1 的权限同步,但该命令必须在服务器 1 上执行。如何使用 rsync 执行此操作?
答案1
rsync -ai user2@server2:/var/www/html/hello/ local/directory/hello
这将使用 SSH 以server2
用户身份连接user2
。该用户必须有权访问将复制的所有文件和目录。的目录内容/var/www/html/hello/
将被复制local/directory/hello
到本地计算机上。
/
请注意源目录路径的尾随。如果没有这个,您将把文件和目录放入hello
目标文件夹中调用的目录中。
如果添加--delete
,您还需要删除目标目录中源端不可用的本地文件。
该-i
选项会打开正在传输的物品的详细列表。有些人喜欢使用-v
而不是-i
.该-a
选项是保留尽可能多的权限和其他元数据的选项,并且还启用子目录中文件的递归复制。
答案2
rsync 的行为就像一个简单的复制程序。因此,从远程同步就像(没有资源或权限等附加选项......)
rsync remoteuser@remoteserver:/var/www/html/hello/* /to/local/folder/
这会将远程文件(而不是文件夹)复制到本地文件夹。
使用选项-avz归档一种备份(包括权限等):
rsync -avz remoteSource localDestination
有关更多选项,请参阅手册页...
编辑1:
*
请考虑 kusalananda 关于使用源文件夹中的尾部的第一条评论。