Linux 使用 rsync 同步文件到另一台机器
在日常运维中,我们经常需要把文件从一台服务器同步到另一台服务器。rsync
是 Linux 下最常用的文件同步工具,支持增量传输、压缩、权限保留等功能,非常高效。
本文将详细介绍 rsync
的安装、基本使用、常见选项以及在实际操作中可能遇到的问题。
一、安装 rsync
Debian / Ubuntu
sudo apt update
sudo apt install rsync -y
CentOS / RHEL
sudo yum install rsync -y
Fedora
sudo dnf install rsync -y
安装完成后,可以通过以下命令验证:
rsync --version
二、rsync 基本用法
rsync
的基本命令格式如下:
rsync [选项] 源路径 目标路径
其中:
- 源路径:要同步的本地文件或目录
- 目标路径:远程服务器的目标位置,格式为
user@host:/path/to/destination
示例 1:同步本地目录到远程服务器
假设我们要把本地 /var/minio/data/blog/
目录同步到远程服务器 192.168.1.183
的 /var/minio/data/blog/
目录:
rsync -avz /var/minio/data/blog/ root@192.168.1.183:/var/minio/data/blog/
参数说明:
-a
:归档模式,保留文件权限、时间戳、符号链接等-v
:显示同步过程-z
:传输时压缩,提高速度
注意源路径末尾的
/
,表示只同步目录内容,而不包含blog
目录本身。
示例 2:连同目录本身一起同步
如果希望把 blog
目录连同其内容一起同步到目标目录:
rsync -avz /var/minio/data/blog root@192.168.1.183:/var/minio/data/
这会在目标机器上生成 /var/minio/data/blog
目录。
三、常见问题与解决方法
1. No such file or directory
错误
如果报错:
rsync: [Receiver] mkdir "/var/minio/data/blog" failed: No such file or directory (2)
原因:目标路径的上级目录不存在。
解决方法:
ssh root@192.168.1.183 "mkdir -p /var/minio/data"
rsync -avz /var/minio/data/blog/ root@192.168.1.183:/var/minio/data/blog/
-p
可以递归创建目录。
2. 无法解析主机名
如果报错:
ssh: Could not resolve hostname 192.168.1.183: Name or service not known
原因:主机名错误或网络无法访问。
解决方法:
- 检查目标 IP 是否正确
- 确认网络连通性:
ping 192.168.1.183
- 确保 SSH 服务开启并允许登录
3. 使用增量同步
rsync
支持增量同步,只传输修改过的文件,减少流量:
rsync -avzu /var/minio/data/blog/ root@192.168.1.183:/var/minio/data/blog/
-u
:跳过目标上较新的文件-z
:压缩传输
四、总结
rsync
是高效的文件同步工具,支持本地与远程同步- 注意源路径末尾
/
的区别 - 遇到路径不存在或网络错误时,需要先处理上级目录或网络连通性
- 可结合
-z
、-u
等选项实现增量同步和压缩传输
💡 小技巧:如果频繁同步,可以配置 SSH 免密登录,避免每次输入密码,提高效率。