一、安装
# 注意:远程传输时,双方都必须安装rsync
# Debian & Ubuntu
$ apt install rsync
# Red Hat
$ yum install rsync
# Arch Linux
$ pacman -S rsync
二、参数说明
rsync
是一个用于在本地和远程系统之间同步文件和目录的强大工具。它可以高效地传输和更新文件,仅传输更改的部分,从而节省带宽和时间。以下是一些常用的 rsync
参数及其说明:
-a, --archive
:以归档模式进行同步,保留文件的所有属性,包括权限、所有者和组、时间戳等。-v, --verbose
:显示详细输出,包括传输的文件和目录。-r, --recursive
:递归地同步目录及其子目录。-z, --compress
:在传输过程中使用压缩,减少数据传输量。-u, --update
:仅传输源目录中更新或新增的文件。-n, --dry-run
:模拟运行,显示将要执行的操作,但不实际执行。-P
:等同于--partial --progress
,显示传输进度,并支持断点续传。--delete
:删除目标目录中与源目录不匹配的文件。--exclude
:排除指定的文件或目录,不进行同步。--include
:仅包括指定的文件或目录,其他文件将被排除。--exclude-from
:从指定的文件中读取排除规则。--include-from
:从指定的文件中读取包含规则。
详解-a
参数:
-a
是 rsync
命令中的一个参数,表示以归档模式进行同步。归档模式是 rsync
的常用模式,它会保留文件的所有属性,并递归地同步目录及其子目录。以下是 -a
参数涵盖的具体属性:
- 权限(Permissions):保留文件的权限设置,包括读、写和执行权限。
- 所有者和组(Ownership):保留文件的所有者和组信息。
- 时间戳(Timestamps):保留文件的创建时间和修改时间。
- 符号链接(Symbolic links):保留符号链接,并在目标系统上创建相应的符号链接。
- 递归同步(Recursive sync):递归同步目录及其子目录。
使用 -a
参数可以方便地进行文件和目录的完整同步,保留源文件的所有属性和结构。示例命令如下:
rsync -a /path/to/source/ /path/to/destination/
此命令将递归地同步 /path/to/source/
目录及其子目录到 /path/to/destination/
目录,并保留文件的权限、所有者和组、时间戳等属性。
需要注意的是,-a
参数并不包括传输过程中的压缩。如果希望在传输过程中使用压缩来减少数据传输量,可以结合使用 -a
和 -z
参数,如下所示:
rsync -az /path/to/source/ /path/to/destination/
这样,rsync
将以归档模式同步文件,并在传输过程中使用压缩。
三、常用命令示例:
- 本地同步目录:
rsync -av /path/to/source/ /path/to/destination/
- 本地同步目录,并删除目标目录中多余的文件:
rsync -av --delete /path/to/source/ /path/to/destination/
- 通过SSH进行远程同步:
rsync -avz -e ssh /path/to/source/ user@remote:/path/to/destination/
- 从文件中读取排除规则进行同步:
rsync -av --exclude-from=/path/to/exclude.txt /path/to/source/ /path/to/destination/