rsync是一个快速、多功能的文件传输工具。它可以通过LAN(局域网)或WAN(广域网),甚至可以通过Internet来高效地同步文件和目录。rsync使用了许多优化技术,使得它在复制大量数据时非常高效,尤其是当处理大文件、大量小文件或符号链接时。

以下是rsync的一些基本用法和选项:

基本语法

bash

rsync [选项] [源路径] [目标路径]
  • 源路径:可以是一个文件或目录。
  • 目标路径:可以是本地的也可以是远程的,如果是远程的,需要指定用户和主机。

常用选项

  • -a, --archive:归档模式,等同于 -rlptgoD(递归、链接、权限、时间戳、所有者、组、设备文件和特殊文件)。
  • -r, --recursive:递归地复制目录内容。
  • -l:复制时保留软链接。
  • -p, --perms:保留文件权限。
  • -t, --times:保留文件时间戳。
  • -o, --owner:保留文件所有者信息。
  • -g, --group:保留文件组信息。
  • -D:保留设备文件和特殊文件。
  • -z, --compress:在传输时压缩文件数据。
  • -u, --update:仅当源文件更新或目标不存在时才复制。
  • --exclude:排除不需要同步的文件或目录。
  • --include:指定需要同步的文件或目录。
  • --dry-run:进行模拟运行,不执行任何实际的复制操作。
  • -v, --verbose:详细模式,显示正在进行的同步操作。
  • --quiet:减少输出信息。
  • --port:指定远程服务器的端口号。
  • --bwlimit:限制I/O带宽,例如 --bwlimit=1000 限制为每秒1000KB。

示例

  1. 本地同步:

bash rsync -a /source/directory /destination/directory

  1. 远程同步:

bash rsync -a user@remotehost:/source /destination

  1. 同步时排除某些文件或目录:

bash rsync -a --exclude 'pattern' /source/directory /destination/directory

  1. 同步时仅更新目标路径中已存在的文件:

bash rsync -au /source/directory /destination/directory

  1. 模拟同步:

bash rsync -av --dry-run /source/directory /destination/directory

  1. 同步时压缩数据:

bash rsync -az /source/directory /destination/directory

  1. 同步时保留硬链接:

bash rsync -aH /source/directory /destination/directory

  1. 同步时保留文件权限和所有权:

bash rsync -aO /source/directory /destination/directory

  1. 同步时限制带宽:

bash rsync -az --bwlimit=1000 /source/directory /destination/directory

  1. 同步时指定远程端口:

    bash rsync -avz --port=2222 user@remotehost:/source /destination

注意事项

  • 使用rsync进行远程同步时,需要在远程主机上运行rsync守护进程或使用ssh作为传输层。
  • 在使用rsync时,可以通过--delete选项删除目标路径中多余的文件,但请谨慎使用,因为这会永久删除文件。
  • rsync非常适合于备份和镜像,因为它可以增量备份,只同步变化的部分。

rsync是一个非常强大的工具,它的选项和功能非常丰富,上述只是一些基本用法。在实际使用中,你可能需要根据具体需求组合不同的选项来达到最佳效果。