rsync 命令
2024年11月1日大约 3 分钟
rsync 是一个用于在本地和远程之间高效传输和同步文件的命令行工具,常用于备份和同步。与 [scp](/linux/command/scp.md) 不同的是,rsync 支持增量传输,仅传输源文件和目标文件之间的差异,从而提高效率。此外,rsync 还支持断点续传。
基本语法
rsync [选项] 源 目标- 源和目标可以是本地路径或远程路径,格式为
user@host:/path。
常用选项
-a:归档模式,递归复制目录,并保留文件的权限、时间戳等属性,相当于-rlptgoD。-r:递归复制目录。-v:详细模式,显示传输过程中的信息。-z:传输时启用压缩,提高传输效率。-P:显示传输进度,并支持断点续传,相当于--progress --partial。--delete:在目标位置删除源中不存在的文件,保持源和目标目录完全同步。-e ssh:通过 SSH 协议传输数据。--exclude:排除特定文件或目录。--bwlimit=[KB/s]:限制传输速度,单位是 KB/s。
基本用法示例
1. 将本地文件或目录同步到远程服务器
rsync -avz /path/to/local/file_or_directory username@remote_host:/path/to/remote/directory/示例:将本地目录
mydir同步到远程服务器的/home/user/目录:rsync -avz mydir user@192.168.1.100:/home/user/
2. 将远程文件或目录同步到本地
rsync -avz username@remote_host:/path/to/remote/file_or_directory /path/to/local/directory/示例:将远程服务器的
/home/user/mydir目录同步到本地/home/localuser/目录:rsync -avz user@192.168.1.100:/home/user/mydir /home/localuser/
3. 递归同步目录并显示进度
rsync -avzP /path/to/local/directory username@remote_host:/path/to/remote/directory/示例:将本地目录
mydir递归同步到远程,同时显示进度和支持断点续传:rsync -avzP mydir user@192.168.1.100:/home/user/
4. 删除目标中多余的文件(使两端完全同步)
rsync -avz --delete /path/to/local/directory username@remote_host:/path/to/remote/directory/示例:将本地目录
mydir同步到远程服务器的/home/user/,并删除目标中源目录不存在的文件:rsync -avz --delete mydir user@192.168.1.100:/home/user/
5. 通过 SSH 指定端口同步
rsync -avz -e "ssh -p 2222" /path/to/local/file username@remote_host:/path/to/remote/directory/示例:使用 SSH 端口 2222 连接到远程服务器同步文件:
rsync -avz -e "ssh -p 2222" myfile.txt user@192.168.1.100:/home/user/
6. 排除特定文件或目录
rsync -avz --exclude 'file_or_directory' /path/to/local/directory username@remote_host:/path/to/remote/directory/示例:将本地目录
mydir同步到远程,同时排除目录中的temp文件夹:rsync -avz --exclude 'temp' mydir user@192.168.1.100:/home/user/
7. 限制传输带宽
rsync -avz --bwlimit=500 /path/to/local/file username@remote_host:/path/to/remote/directory/示例:将文件上传到远程,并将传输速度限制为 500 KB/s:
rsync -avz --bwlimit=500 myfile.txt user@192.168.1.100:/home/user/
注意事项
- 保留文件属性:
-a选项会保留文件的权限、时间戳等信息,适合备份需求。 - 删除选项:
--delete选项在某些场景(如备份)下应谨慎使用,以免误删除文件。 - 增量同步:
rsync只传输源和目标之间不同的部分,适合大文件的重复传输。 - 带宽控制:通过
--bwlimit可以有效控制传输带宽,避免网络拥堵。