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。
示例
- 本地同步:
bash
rsync -a /source/directory /destination/directory
- 远程同步:
bash
rsync -a user@remotehost:/source /destination
- 同步时排除某些文件或目录:
bash
rsync -a --exclude 'pattern' /source/directory /destination/directory
- 同步时仅更新目标路径中已存在的文件:
bash
rsync -au /source/directory /destination/directory
- 模拟同步:
bash
rsync -av --dry-run /source/directory /destination/directory
- 同步时压缩数据:
bash
rsync -az /source/directory /destination/directory
- 同步时保留硬链接:
bash
rsync -aH /source/directory /destination/directory
- 同步时保留文件权限和所有权:
bash
rsync -aO /source/directory /destination/directory
- 同步时限制带宽:
bash
rsync -az --bwlimit=1000 /source/directory /destination/directory
-
同步时指定远程端口:
bash rsync -avz --port=2222 user@remotehost:/source /destination
注意事项
- 使用
rsync进行远程同步时,需要在远程主机上运行rsync守护进程或使用ssh作为传输层。 - 在使用
rsync时,可以通过--delete选项删除目标路径中多余的文件,但请谨慎使用,因为这会永久删除文件。 rsync非常适合于备份和镜像,因为它可以增量备份,只同步变化的部分。
rsync是一个非常强大的工具,它的选项和功能非常丰富,上述只是一些基本用法。在实际使用中,你可能需要根据具体需求组合不同的选项来达到最佳效果。