简介
rsync 是一个用于文件同步和传输的命令行工具。它可以在本地系统之间或者通过SSH等安全通道在本地和远程系统之间同步文件和目录。
你可能听过 scp,scp 主要通过 SSH 进行加密传输,只能用于本地和远程系统之间的文件拷贝。而 rsync 提供了更多的功能,如增量传输、删除目标端不存在的文件、排除特定文件等。
常见选项
-a, --archive
: 归档模式,保留文件的所有元数据,包括权限、所有者、组、时间等。-v, --verbose
: 输出详细信息,显示正在执行的操作。-r, --recursive
: 递归地同步子目录。-z, --compress
: 在传输时压缩数据,可以节省带宽。-u, --update
: 仅传输源目录中更新的文件。-n, --dry-run
: 模拟执行同步操作,显示将要发生的改变但不实际指令同步。-e, --rsh=COMMAND
: 选择在传输时使用的远程 shell 程序,通常是 rsh 或 ssh。--delete
: 删除目标目录中源目录没有的文件。--exclude=PATTERN
: 排除匹配指定模式的文件或目录。
示例
# 本地同步,如果是目录需要 -r 选项
rsync -av /path/to/source /path/to/destination
# 本地到远程
rsync -av /path/to/source user@remote_host:/path/to/destination
# 远程到本地
rsync -av user@remote_host:/path/to/source/ /path/to/destination/
# 同步并删除目标目录中不存在的文件
rsync -av --delete /path/to/source/ /path/to/destination/
# 排除特定文件或目录的同步
rsync -av --exclude='*.log' /path/to/source/ /path/to/destination/
# 模拟同步操作,显示将要发生的改变但不实际执行同步
rsync -av --dry-run /path/to/source/ /path/to/destination/