三 文章首页 实时留言 网络邻居 开往 虫洞
返回

文件同步工具 rsync 的使用

2025-07-18 17:17:45
分类: Linux 标签: 系统运维

rsync 全名叫 "remote sync"(远程同步),如它的名字意思一样,它可以用来做一些文件同步工作的。也就是从本机同步另一台计算机的文件,或反之。

它的主要优点:

  1. 支持增量同步传输:只传输变更部分
  2. 支持压缩:可减少传输数据量
  3. 支持多种协议:本地、ip、SSH、守护进程等
  4. 支持断点续传、权限保留、删除同步等高级特性

快速上手


使用它首先要在两台需要同步数据的电脑中都安装 rsync,它在 Linux 上的安装命令:

# Debian / Ubuntu
sudo apt install rsync
# Fedora / ReadHat
sudo dnf install rsync

安装完后在一端使用以下命令即可进行同步

rsync -r [源数据]  [同步的目标]

其中 -r 代表递归文件包括目录。

使用示例


把本机当前目录下的文件同步到 user@host:文件路径 下。

rsync -r ./  user@host:文件或目录路径

把远端 user@host:文件路径 下的文件同步到本机当前目录。

rsync  -r user@host:文件或目录路径 ./

如果带 user@host 这些都是使用 ssh 协议,如果需要本地的同步也可以直接使用本地路径。 除此之外,还可以使用 ip 地址

rsync -r 192.168.31.121/模块名/文件路径

其中 模块名 指用 rsync 建立守护进程时直接对外开放的模块,需要自己分配。

rsync 服务端的模块通过配置文件(通常是 /etc/rsyncd.conf)定义

# 全局配置(可选)
uid = nobody          # 运行 rsync 服务的用户
gid = nobody          # 运行 rsync 服务的组
port = 873            # 默认端口(rsync 协议专用)
log file = /var/log/rsyncd.log  # 日志文件路径

# 定义一个名为 "backup" 的模块
[backup]
path = /data/backup   # 模块对应的实际实际目录
comment = Backup files  # 模块描述(可选)
read only = no        # 是否只读(no 表示可读写)
write list = admin    # 允许写入的用户列表(需配合认证)
hosts allow = 192.168.1.0/24  # 允许访问的客户端 IP 段
auth users = admin    # 允许访问的用户(需密码文件)
secrets file = /etc/rsyncd.secrets  # 密码文件路径(格式:用户名:密码)

启动 rsync 服务器守护进程

rsync --daemon

更多参数


-e 手动指定 ssh 传输端口

rsync -r -e 'ssh -p 2234' [源] user@remote_host:[目标]

--exclude 排除不同文件

rsync -r --exclude="*.zip" [源] user@remote_host:[目标]

如果排除的很多,可以使用 --exclude-from 来指定一个 txt 文件,每个模式一行

rsync -r --exclude-from='exclude-file.txt' [源] user@remote_host:[目标]

-delete 删除目标端存在而源端不存在的文件

-P 显示传输进度并支持断点续传

-v -vv -vvv 添加日志(从简单到详细)

-z 在传输过程中压缩文件数据。

--existing 只同步目标已经存在的文件和目录

-m 不同步空目录

--link-dest 那些没变动的文件会生成硬链接。这个命令的第一次传输时是全量备份,后面就都是增量传输。

--size-only 只同步大小有变化的文件,不考虑文件修改时间的差异