学无止境
欢迎关注我的公众号
接收定期更新文章
一行命令搞定代码上线!用 rsync 实现高效、安全的自动化部署
2026-01-05 15:35:20
963

 

rsync 是一个高效、快速的文件同步和传输工具,广泛用于 Linux/Unix/macOS 系统中。它支持本地复制、远程同步,并具备增量传输、压缩、断点续传、权限保留等强大功能。

1、安装 rsync

1. Linux(大多数发行版已预装)

  • Debian/Ubuntu

          
    1
    2

    sudo apt update
    sudo apt install rsync

  • CentOS/RHEL/Fedora

          
    1
    2
    3
    4
    5

    # CentOS 7/8, RHEL
    sudo yum install rsync
     
    # Fedora / RHEL 9+
    sudo dnf install rsync

2. macOS(自带)

      
1
2

# 直接可用,无需安装
rsync --version

3. Windows

Windows 原生不支持 rsync,但可通过以下方式使用:

  • WSL(推荐):安装 WSL(如 Ubuntu),然后按 Linux 方式使用。

  • Cygwin / MSYS2:提供类 Unix 环境。

  • cwRsync(第三方工具):https://itefix.net/cwrsync

2、基本语法说明

      1rsync [选项] 源路径 目标路径

常用选项说明:

选项作用
-a归档模式(保留权限、时间、属主、软链接等)✅ 最常用
-v详细输出(显示同步了哪些文件)
-z传输时压缩数据(节省带宽)
-P显示进度 + 支持断点续传(= --partial --progress
--delete删除目标端多余的文件(保持完全一致)⚠️ 谨慎使用
-n--dry-run试运行,只显示会做什么,不实际执行
--exclude=PATTERN排除匹配的文件或目录

3、实操案例

需求:

  • • 本地代码更新后增量上传到线上网站目录

  • • 定期备份线上网站到本地目录

步骤:

  • • 1)本地和线上均安装rsync服务

  • • 2)创建服务目录和密钥文件

      
1
2
3
4
5
6
7
8
9

# 创建服务目录
mkdir /usr/local/rsync
 
# 创建密钥文件:admin是账号,123456是密码
echo 'admin:123456' > /usr/local/rsync/rsyncd.secrets
 
# 设置密钥文件权限
chmod 400 rsyncd.secrets
 

  • • 3)创建配置文件rsyncd.conf

      
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

uid = root
gid = root
use chroot = no
strict modes = false
pid file = /usr/local/rsync/rsyncd.pid # pid文件
lock file = /usr/local/rsync/rsync.lock # lock文件
log file = /usr/local/rsync/rsyncd.log # 日志文件
transfer logging = true
log format= "%o [%a] %m (%u) %f %l %b %c"
reverse lookup = no
ignore errors = true
read only = false
hosts allow = xx.xx.xx.xx  # 允许操作的IP,为了安全一定要填写。。。
hosts deny = 0.0.0.0/0.0.0.0 # 默认禁止所有IP,不加则不限制
strict modes = yes
list = false
max connections = 100
timeout = 1800
 
[web] # 项目名称
path = /data/test/ # 项目目录
auth users = admin # 授权用户名
secrets file = /usr/local/rsync/rsyncd.secrets # 密码文件

  • • 4)启动服务

      1rsync --daemon --config=/usr/local/rsync/rsyncd.conf
  • • 5)开放端口

      
1
2
3

# 若在同一个网络下忽略该步骤
 
# 若外网则需要开启873端口

  • • 6)同步本地代码到线上

      
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 创建本地的密码文件 123456 就是线上rsync服务的密码
echo '123456' > /prodir/rsyncd.online.secrets
 
# 同步排除文件(可选)
# /prodir/exclude.txt
.git
.env
.env.exmaple
.htaccess
.gitignore
 
# 同步/prodir/test目录代码到线上
rsync -avzr \
 --password-file=/prodir/rsyncd.online.secrets \
 --delete \ 
 --exclude-from=/prodir/exclude.txt \
 /prodir/test \
 admin@xx.xx.xx.xx::web

  • • 7)执行成功后会显示下面的结果,完成了从本地同步代码到线上的任务。

  • • 8)备份线上代码到本地

      
1
2
3
4
5

rsync -avzr \
 --password-file=/prodir/rsyncd.online.secrets \
 --exclude-from=/prodir/exclude.txt \
 admin@xx.xx.xx.xx::web \
 /prodir/test2

4、扩展练习:实现一个客户端发布工具

  • • 1)实现迁出git远程仓库代码

  • • 2)点击同步当前代码到线上

  • • 3)定期备份线上代码到备份目录

 


文件同步
数据备份
Linux工具
运维指南
欢迎关注我的公众号,获取更多文章