Linux 使用 rsync 同步文件到另一台机器

发表于 2025-08-31 11:42:51 分类于 默认分类 阅读量 23

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 免密登录,避免每次输入密码,提高效率。

码字奇遇记
一路向前,山海自平