运行 rsync 并使用以下 -r
标志,这意味着递归并且对于目录同步至关重要:
rsync -r dir1/ dir2
使用-a
代表“存档”的标志。这是一个推荐的标志,并且比 更常用-r
。
该标志递归同步并保留符号链接。它包括特殊文件和设备文件、修改时间、组、所有者和权限。
使用该标志运行相同的命令-a
:
rsync -a dir1/ dir2
注意:在前两个命令的语法中,第一个参数末尾有一个尾部斜杠 (/)。
该尾部斜杠显示了 的内容dir1
。
如果没有尾部斜杠,dir1
目录将放置在dir2
.
结果将创建如下所示的层次结构:
~/dir2/dir1/[files]
在执行命令之前检查您的参数rsync
。
-n
Rsync 提供了一种传递或选项的方法--dry-run
。该-v
标志代表详细,也需要获得正确的输出。
对于下一个命令,您可以组合a
、n
和v
标志:
rsync -anv dir1/ dir2
Output
sending incremental file list
./
file1
file10
file100
file11
file12
file13
file14
file15
file16
file17
file18 . . .
您还可以将输出与删除尾部斜杠时的输出进行比较:
rsync -anv dir1 dir2
Output
sending incremental file list
dir1/
dir1/file1
dir1/file10
dir1/file100
dir1/file11
dir1/file12
dir1/file13
dir1/file14
dir1/file15
dir1/file16
dir1/file17
dir1/file18 . . .
输出显示目录已传输,而不仅仅是目录中的文件。
使用 Rsync 工具与远程系统同步
您将需要在本地和远程计算机之间配置 SSH 访问。rsync
在两个系统中安装。
在两台计算机之间验证 SSH 访问后,dir1
使用以下语法将上一节中的文件夹同步到远程计算机。
当我们想要传输实际目录时,我们可以删除尾部斜杠,如下所示:
rsync -a ~/dir1 username@remote_host:destination_directory
这是一个推送操作,因为它将目录从本地系统“推送”到远程系统。拉操作将远程目录同步到本地系统。
如果 dir1 目录位于远程系统而不是本地系统上,请使用以下语法:
rsync -a username@remote_host:/home/username/dir1 place_to_sync_on_local_machine
源是上面的第一个参数,目的地是第二个。
使用其他 Rsync 选项
Rsync 提供了更改实用程序默认行为的选项。
例如,您可以通过使用选项添加压缩来减少网络传输-z
。当传输尚未压缩的文件时,它非常有用。
rsync -az source destination
旗帜-P
也很有帮助。它结合了标志--progress
和--partial
。第一个标志提供了传输进度条。第二个标志恢复中断的传输:
rsync -azP source destination
Output
sending incremental file list
created directory destination
source/
source/file1
0 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=99/101)
sourcefile10
0 100% 0.00kB/s 0:00:00 (xfr#2, to-chk=98/101)
source/file100
0 100% 0.00kB/s 0:00:00 (xfr#3, to-chk=97/101)
source/file11
0 100% 0.00kB/s 0:00:00 (xfr#4, to-chk=96/101)
source/file12
0 100% 0.00kB/s 0:00:00 (xfr#5, to-chk=95/101)
. . .
如果再次运行该命令,您会得到缩短的输出。 Rsync
使用修改时间来查看是否进行了更改:
rsync -azP source destination
Output
sending incremental file list
sent 818 bytes received 12 bytes 1660.00 bytes/sec
total size is 0 speedup is 0.00
您可以更新某些文件的修改时间:
touch dir1/file{1..10}
如果再次运行 rsync -azP
,输出将显示如何Rsync
智能地仅重新复制已修改的文件:
rsync -azP source destination
Output
sending incremental file list
file1
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=99/101)
file10
0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=98/101)
file2
0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=87/101)
file3
0 100% 0.00kB/s 0:00:00 (xfer#4, to-check=76/101)
. . .
默认情况下,rsync
不会从目标目录中删除任何文件。要保持两个目录同步,请从目标目录中删除文件(如果已从源目录中删除文件)。
您可以使用选项更改它--delete
。在此之前,使用-n
,--dry-run
选项执行测试:
rsync -an --delete source destination
您可以在同步时排除目录内的某些文件或目录。它还允许您在选项后面的逗号分隔列表中指定它们--exclude=:
rsync -a --exclude=pattern_to_exclude source destination
通过覆盖与不同模式匹配的文件的排除来排除指定模式。您可以使用--include= option:
rsync -a --exclude=pattern_to_exclude --include=pattern_to_include source destination
该--backup
选项用于存储重要文件的备份。它与--backup-dir
选项一起使用。它指定存储备份文件的目录
rsync -a --delete --backup --backup-dir=/path/to/backups /path/to/source destination
概括
Rsync 或远程同步可让您将文件和目录传输到本地和远程目的地。
Rsync
用于镜像、备份或将数据迁移到其他服务器。它是一种高效的工具,仅复制源中的更改并提供自定义选项