Linux中的远程文件同步
在本文中,我们将了解 Linux 中处理远程文件同步的 rsync 命令。本文将提供有关如何使用 rsync 和最常用选项的实际示例。
远程同步或rsync是一个功能强大的命令行实用工具,负责远程以及本地同步两台计算机之间的文件和目录。同步文件时,一台计算机将执行操作作为主机,下一个作为目的地。
Linux 系统管理员是使用该命令最多的人。您可以使用 rsync 命令在本地和远程复制和同步文件和目录,维护备份和镜像数据。
Rsync命令的特点
rsync 是复制、同步和进行数据备份时最常用的命令。使用此功能,我们可以根据文件大小变化和上次修改时间更快地定位文件。它使用快速检查算法来实现这一点。
据说使用 rsync 的文件传输速度更快,因为它使用增量传输算法。在此,它负责比较主机和目标文件,并且仅发送看到的差异。第一次传输整个文件,下次传输时仅发送差异,这使得文件传输变得更轻、更快。
Rsync 通过 zip 压缩文件并进行传输来节省您的带宽。
句法
以下是 rsync 命令的语法:
Rsync - 本地到本地
rsync [OPTION]... SRC [SRC]... DEST
Rsync - 本地到远程
rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
Rsync - 远程到本地
rsync [OPTION]... [USER@]HOST:SRC [DEST]
正如我们所讨论的,rsync 命令可用于将文件/目录从一台计算机复制到另一台计算机。因此,文件传输可以发生在本地计算机之间、本地到远程计算机以及从远程到本地计算机。
当涉及远程计算机时,rsync 命令会有所不同,让我们检查所有三种情况的语法。
参数
以下是该命令的参数 -
选项 - rsync 命令可以使用许多选项。让我们在下面的部分中详细讨论这些选项。
SRC - 源文件或目录
DEST - 目标文件或目录。
USER - 远程计算机用户名。
HOST - 远程计算机主机名或 IP 地址。
Rsync 命令中的选项
以下是 rsync 命令使用的最基本选项的列表。
-a - 此选项负责递归复制文件,并确保维护(用户、所有者、其他)的文件权限、符号链接权限。
-r - 此选项也会递归复制文件,但不考虑文件权限、符号链接权限。
-z - 用于在传输时压缩数据。
-p - 这有助于保留文件权限。
-q - 这负责保留组权限。
-t - 这确保修改文件得到维护。
-P - 帮助查看文件传输的进度。
-v - 还将显示进度,但显示每个文件的一些细节。
例子
文件从本地计算机上的一个文件夹传输到另一个文件夹。在下面的示例中,我们的当前文件夹中有一个非常大的文件,名为 test_backup.gz 。我想将其传输到另一个名为 test 的文件夹中。将文件传输到文件夹 test/ 的命令如下 -
rsync -v test_backup.gz test/
选项 -v 或 -p 将负责向用户显示文件传输的进度。相同的文件名 test_backup.gz 将被复制到 test/ 目录中。如果您不想保留正在复制的原始文件名,您还可以指定自己的文件名。
输出
命令的输出如下所示 -
ubuntu@ip-xx-xx-xx-xx:~$ mkdir test
ubuntu@ip-xx-xx-xx-xx:~$ rsync -v test_backup.gz test/
sending incremental file list
test_backup.gz
sent 828,331,571 bytes received 35 bytes 66,266,528.48 bytes/sec
total size is 828,129,280 speedup is 1.00
ubuntu@ip-xx-xx-xx-xx:~$ cd test
ubuntu@ip-xx-xx-xx-xx:~/test$ ls
test_backup.gz
ubuntu@ip-xx-xx-xx-xx:~/test$
如果您不想看到 rsync 命令的进度,可以跳过 -v 选项。 rsync 命令负责创建文件或目录(如果不存在)。
例子
让我们首先看看将目录从本地计算机上的一个位置传输到另一个位置的命令。
rsync -av test/ demo/
-a 选项将开始递归地将所有文件从 test/ 文件夹复制到 demo/ 文件夹。确保您具有 test/ 文件夹的读取权限和写入权限。
请注意,rsync 命令负责创建目标目录(如果目标目录不存在)。
输出
命令的输出如下所示 -
ubuntu@ip-xx-xx-xx-xx:~$ rsync -av test/ demo/
sending incremental file list
./
abc.xhtml
hello.xhtml
login.xhtml
login-test.xhtml
success.xhtml
activation.xhtml
password.xhtml
reset.xhtml
return.xhtml
setter.xhtml
sent 73,972 bytes received 247 bytes 148,438.00 bytes/sec
total size is 73,012 speedup is 0.98
ubuntu@ip-xx-xx-xx-xx:~$
例子
在我的计算机上,我有一个备份文件,我想将其复制到另一台远程计算机。为此,我们需要远程计算机的用户名、主机或 IP 地址。现在我有用户名和IP地址。让我们尝试将备份文件复制到远程计算机。
执行此操作的命令如下:
rsync -v my_backupfile.zip ubuntu@12.343.11.34:/tmp/
文件是 my_backupfile.zip,我们要发送到机器 IP 地址:12.343.11.34 的机器。该机器的用户名是 ubuntu。我们想将文件 my_backupfile.zip 复制到 tmp/ 文件夹中。如果服务器受密码保护,则在文件传输时必须输入密码。
输出
该命令的输出如下所示:
ubuntu@ip-xx-xx-xx-xx:~$ rsync -v my_backupfile.zip ubuntu@12.343.11.34:/tmp/
my_backupfile.zip
sent 828,331,547 bytes received 35 bytes 61,357,894.96 bytes/sec
total size is 828,129,280 speedup is 1.00
ubuntu@ip-10-97-24-72:~$
现在让我们尝试该目录并将其复制到 tmp/ 文件夹。命令是 -
rsync -av pages ubuntu@12.343.11.34:/tmp/
在上面的命令中,您可以将 Pages 目录复制到 tmp/ 文件夹。我们使用了 -a 选项,以便所有子目录也被复制。
ubuntu@ip-xx-xx-xx-xx:~$ rsync -av pages ubuntu@12.343.11.34:/tmp/
sending incremental file list
test/
test/abc/
test/abc/one.xml
test/abc/cases/
test/abc/cases/my.properties.xhtml
test/abc/incl/
test/abc/incl/tpl/
test/abc/incl/tpl/login.xhtml
test/src/
test/src/password.xhtml
test/src/otp.xhtml
test/src/login.xhtml
test/src/reset-password.xhtml
sent 99,589 bytes received 371 bytes 199,920.00 bytes/sec
total size is 98,078 speedup is 0.98
ubuntu@ip-10-97-24-72:~$
例子
在本例中,我们的本地计算机上的远程服务器上有一些文件。相同的命令是 -
rsync -av ubuntu@12.343.11.34:test.txt tmp
文件 test.txt 在远程计算机 12.343.11.34 上可用。我们希望该文件位于本地计算机上的 tmp 文件夹中。如果服务器受密码保护,则在文件传输时必须输入密码。
输出
该命令的输出是:
ubuntu@ip-xx-xx-xx-xx:~$ rsync -av ubuntu@12.343.11.34:test.txt tmp
receiving incremental file list
test.txt
sent 43 bytes received 1,988,966 bytes 1,326,006.00 bytes/sec
total size is 1,988,385 speedup is 1.00
ubuntu@ip-xx-xx-xx-xx:~$
远程服务器到我们的本地计算机
我们还尝试将目录从远程服务器同步到本地计算机。它的命令是
例子
rsync -av ubuntu@12.343.11.34:demo tmp
这里目录 demo 存在于远程计算机 ubuntu@12.343.11.34 上。我们想将其复制到本地计算机上的 tmp 目录中。
输出
命令的输出如下 -
ubuntu@ip-xx-xx-xx-xx:~$ rsync -av ubuntu@12.343.11.34:demo tmp
receiving incremental file list
demo/
demo/abc.txt
sent 47 bytes received 200 bytes 164.67 bytes/sec
total size is 53 speedup is 0.21
ubuntu@ip-xx-xx-xx-xx:~$