一、安装

# 注意:远程传输时,双方都必须安装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参数:

-arsync 命令中的一个参数,表示以归档模式进行同步。归档模式是 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 将以归档模式同步文件,并在传输过程中使用压缩。

三、常用命令示例:

  1. 本地同步目录:
rsync -av /path/to/source/ /path/to/destination/
  1. 本地同步目录,并删除目标目录中多余的文件:
rsync -av --delete /path/to/source/ /path/to/destination/
  1. 通过SSH进行远程同步:
rsync -avz -e ssh /path/to/source/ user@remote:/path/to/destination/
  1. 从文件中读取排除规则进行同步:
rsync -av --exclude-from=/path/to/exclude.txt /path/to/source/ /path/to/destination/