虚拟主机域名注册-常见问题其他问题 → 其他问题

两台服务器之间怎么使用rsync命令同步文件

  作为系统管理员或普通Linux用户,有时您需要在两台服务器或两个 Linux 桌面系统之间传输文件。最常用的方法是FTP或SCP。

  但是,如果您不想使用这两个工具怎么办?

  然后Rsync是要走的路。这个工具比你想象的更强大。这篇文章将为您提供有关如何使用 Rsync 在两个服务器之间传输文件和目录的详细建议。

  1、什么是 Rsync?

  Rsync 是一个命令行实用程序,可用于在两个 Linux 系统或目录之间同步文件。您可以在本地或远程使用此命令。

  简而言之,您可以使用 Rsync 在两个系统之间移动文件而无需 FTP。此工具使用默认的 SSH 端口。但是,您可以使用各种可用选项指定端口,正如您将在本文中了解到的那样。

  2、cp / scp 和 rsync 有什么区别?

  这个问题本身可能是一个完整的话题。但为了让一切都简洁明了——CP 命令复制文件,默认情况下,它确保文件和目录具有唯一的完整路径名。这与跨两个系统安全复制文件的 SCP 命令的情况相同。

  SCP 是 CP 命令的更高级版本。

  另一方面,rsync 命令同步文件和目录。

  这里的术语同步意味着如果file_A在Server-One上有一个,您可以使用 Rsync 在Server_Two上创建该文件的副本。如果file_A在Server-One上更新了,下次运行 Rsync 命令时,它只会将更改更新到Server-Two上。

  这与CP将再次复制整个文件的命令不同。

  该Rsync命令在执行增量传输或复制时非常有用——例如,进行系统备份。它还可以节省带宽和时间。

  该SCP命令最适合在系统之间传输小文件。

  3、先决条件

  两台 Linux 服务器已启动并正在运行。您可以使用 VMware、VirtualBox 或Quickemu等虚拟化软件将它们安装为虚拟机。

  发送文件的服务器应该可以访问其他服务器的 SSH 端口。

  根访问权限。

  4、基本 Rsync 语法。

  这篇文章将使用术语推和拉来使事情简单明了,并帮助您更快地理解 Rsync。

  推送是您将文件从服务器 A 发送到服务器 B 的地方。

  拉取是指您从远程服务器获取文件。

  在使用 Rsync 进行推送(将文件传输到远程服务器)时,您将使用以下语法。

  rsync [-options] SOURCE user@x.x.x.x:DESTINATION

  使用 Rsync 进行拉取时使用以下语法(将文件从远程服务器获取到本地服务器)。

  rsync [-options] user@x.x.x.x:SOURCE DESTINATION

  SOURCE:这是指您要传输的文件或目录的路径。

  [-options]:这是指您可以与 Rsync 命令一起使用的所有参数。

  DESTINATION:这是指文件将存储在接收服务器上的位置。

  user@x.x.x.x:这是接收服务器的用户名和 IP 地址。

  5、使用 Rsync 同步同一系统上的目录。

  启动终端并使用mkdir命令创建两个目录 –Dir_One和Dir_Two.

  mkdir Dir_One Dir_Two

  使用 touch 命令在内部创建几个虚拟文件Dir_One。

  touch Dir_One/file{1..10}

  当您运行 ls 命令时,Dir_One您将看到创建的所有文件。然而,Dir_Two依旧是空的。要同步到的内容Dir_One,Dir_Two您将使用下面的 Rsync 命令语法。

  rsync -r Dir_One/ Dir_Two

  这里我们使用了-r选项,这意味着我们正在递归地复制文件。或者,您也可以使用代表“存档”-a的选项。 此选项以递归方式同步文件并保留其他功能,如符号链接、修改时间、组、所有者和用户权限。

  注意:上面的命令/后面有一个斜杠。Dir_One后面这个斜杠很重要,因为它指定我们正在复制目录内的文件,而不是整个目录本身。

  当您在Dir_Two上运行ls命令时,您将注意到它具有与Dir_One相同的文件。

  6、将文件从一台服务器传输(推送)到另一台服务器

  我们准备了两个服务器设置,Johndoe服务器和Alexdoe服务器。我们将使用以下语法将文件从Johndoe服务器发送到Alexserver。

  rsync [-options] SOURCE user@x.x.x.x:DESTINATION

  首先,使用以下命令创建一个要发送的虚拟文件。

  touch file_One

  接下来,使用下面的命令将此文件传输到第二台服务器。

  注意:您会看到一个提示,要求您输入“接收服务器”的用户密码。

  rsync file_One alexdoe@192.168.1.45:/home/alexdoe

  现在,当您在第二台服务器 ( Alexdoe) 上运行 ls 命令时,您将在其主目录中看到您传输的文件。

  这非常简单,因为我们只处理一个文件。-a在一个目录中传输多个文件时,您将需要使用该选项。让我们看一个简单的例子。

  创建一个名为的目录Dir_One并在此文件夹中创建几个虚拟文件。您可以运行以下命令。

  mkdir Dir_One

  touch Dir_One/file{1..100}

  要将这些文件复制到其他服务器 ( Alexdoe),您将使用以下命令。请注意该-a选项。

  rsync -a Dir_One/ alexdoe@192.168.1.45:/home/alexdoe

  当您在接收服务器上运行ls命令时,应该会看到类似下图的输出。已成功复制文件。

  处理大量文件时,最好采取预防措施,避免复制错误的项目或错误的目标位置。其中一种方法是使用-n选项执行干式运行。您可以包括的另一个选项是-v或“verbose”,它向您显示终端上发生的情况。

  注意:试运行仅显示将要发生的情况。它不会传输/复制任何文件。

  要试运行我们上面复制的文件,我们将使用下面的命令。

  rsync -anv Dir_One/ alexdoe@192.168.1.45:/home/alexdoe

  您可以看到将要传输的所有文件,包括总字节数。此方法(试运行)使您能够验证和确认将传输的内容。

  在上面的一段中,您了解了尾部斜线 ( /) 的重要性。让我们在不添加斜杠( /) 的情况下进行试运行。

  在不添加斜杠 ( /) 的情况下,您可以在上图中看到您会将整个目录传输到您的其他服务器。

  7、从远程服务器获取(拉取)文件

  到目前为止,您已经了解了如何将文件发送到远程服务器。如果您想从远程服务器获取(拉取)文件怎么办?您只需要调整 Rsync语法,如下所示。

  rsync user@x.x.x.x:SOURCE DESTINATION

  假设有一个TextFile_One在Alexdoe服务器上调用的文件,我们希望将其传输到我们的Johndoe服务器。您将使用以下语法。

  rsync -av alexdoe@192.168.1.45:/home/alexdoe/TextFile_One /home/johndoe/

  您可以看到命令中添加了两个选项,包括-v允许我们查看幕后发生情况的选项。

  假设您在另一台服务器上有一个目录Test_Directory,其中包含多个文件。要获取此目录,您将使用以下命令。请注意,我们添加了该-r选项并删除了目录名称后的尾部斜杠。

  8、Rsync命令提示和技巧

  现在您已经很好地了解了如何使用 Rsync 命令在两个服务器之间传输文件,让我们看看一些会派上用场的提示和技巧。

  Rsync -d 选项

  要使用 Rsync 实用程序仅传输不包含其内容的目录,您将需要使用该-d选项。另外,不要在目录名后添加尾部斜杠。例如,要拉取Test_Directory从其他服务调用的目录,您可以使用以下命令。

  rsync -d alexdoe@192.168.1.45:/home/alexdoe/Test_Directory /home/johndoe

  Rsync -t 选项

  Rsync-t选项使您能够复制文件上次修改的日期和时间。在处理定期审核的文件时,此选项非常有用。

  使用 Rsync 的特定端口

  默认情况下,Rsync 使用专用的 SSH 端口(端口 22)。但是,如果您更改了此端口或设置了在特定端口上运行的 Rsync 守护程序,则需要使用该-e选项在命令中指定端口。

  要执行推送操作,请使用以下语法。

  rsync [options] -e 'ssh -p PORT' SOURCE user@x.x.x.x:DESTINATION

  例如,

  rsync [options] -e ‘ssh -p 22’ SOURCE user@x.x.x.x:DESTINATION

  要执行拉动操作,请使用以下语法。

  rsync [options] -e 'ssh -p PORT' user@x.x.x.x:SOURCE DESTINATION

  例如,

  rsync [options] -e 'ssh -p 22 user@x.x.x.x:SOURCE DESTINATION




免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:bkook@qq.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
【 双击滚屏 】 【 推荐朋友 】 【 收藏 】 【 打印 】 【 关闭 】 【 字体: 】 
上一篇:Mako服务器如何编译和使用Lua驱动
下一篇:VirtualBox USB 枚举错误和扩展包安装怎么修复
  >> 相关文章
没有相关文章。
0

在线
客服

在线客服服务时间:9:00-18:00

客服
热线

19899115815
7*24小时客服服务热线

关注
微信

关注官方微信
顶部