news 2026/5/3 14:48:21

【Linux 基础知识系列:第二百篇】使用 rsync 实现异地备份与增量同步

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Linux 基础知识系列:第二百篇】使用 rsync 实现异地备份与增量同步

一、简介:为什么备份必须“增量+异地”

  • 数据即资产:代码、数据库、图片、日志,丢一次就可能“社会性死亡”。

  • 全量拷贝太慢:1 T 数据天天全量,硬盘和网络都扛不住。

  • rsync 优势

    1. 增量算法:只传“变化块”,节省 90% 流量;

    2. 压缩/断点续传:弱网也稳;

    3. 支持本地、远程 shell、守护进程 3 种模式;

    4. 开源、无许可证费用,Linux/Win/Mac 全平台。

掌握 rsync,等于给数据上了“医保 + 高铁”:又快又省钱,还能异地容灾。


二、核心概念速通(新手 5 min 看懂)

术语/参数一句话说明类比
增量备份 (incremental)只拷贝“新增/修改”部分只带今天写完的作业去交
镜像同步 (mirror)目标与源完全一致,多删少补微信聊天记录漫游
--delete目标端存在、源端不存在的文件一律删除保持“一模一样”
--exclude排除指定文件/目录,支持通配打包行李不带拖鞋
--link-dest硬链接参考目录,实现“快照”功能同一文件多快照,只占 1 份物理空间
rsync algo滚动校验和,只传差异块发 diff 补丁,而非整个安装包
daemon 模式服务端常驻 873 端口,支持匿名/账号认证FTP 的替代品,更快

三、环境准备( 10 min 搭好实验台)

3.1 实验拓扑

+-------------+ 22/873 +-------------+ | 本地节点 A | <-------> | 异地节点 B | | 192.168.1.10 | | 10.0.0.20 | +-------------+ +-------------+

3.2 系统与软件

  • OS:CentOS 7/8、RockyLinux 9、Ubuntu 20.04+ 均可。

  • rsync:系统自带 v3.1.3+,建议 ≥3.2 支持xxh128校验。

  • SSH:默认安装,用于加密远程 shell 模式。

  • crontab/systemd-timer:做定时任务。

  • 硬盘:/backup 分区 ≥ 源数据 1.2 倍,留快照余量。

3.3 免密 SSH(必做,否则定时任务卡住)

# 在 A 节点生成密钥 ssh-keygen -t ed25519 -P '' -f ~/.ssh/id_ed25519 # 拷贝公钥到 B 节点 ssh-copy-id -i ~/.ssh/id_ed25519.pub root@10.0.0.20 # 验证 ssh root@10.0.0.20 "hostname && uptime"

四、实际案例与步骤(跟着敲即可)

目标:每天 02:30 把/data/www增量同步到异地10.0.0.20:/backup/www,并保留 7 天快照。

4.1 创建基础目录(B 节点)

ssh root@10.0.0.20 ' mkdir -p /backup/www/{current,snapshots} ls -ld /backup/www/*'

4.2 第一次全量(手动触发)

# 在 A 节点执行 rsync -avP \ --delete \ --exclude="*.log" \ --exclude="*.tmp" \ /data/www/ root@10.0.0.20:/backup/www/current

参数拆解
-a归档(递归+保留权限+时间戳)
-v显示详情
-P断点续传 + 进度条
--delete保证两端镜像
--exclude不同步日志和临时文件

4.3 利用--link-dest做快照(关键)

# 定义变量,方便阅读 REMOTE="root@10.0.0.20" TARGET="/backup/www/current" SNAP="/backup/www/snapshots/$(date +%F_%H-%M)" LINK="/backup/www/current" # 硬链接参考目录 rsync -avP \ --delete \ --exclude="*.log" \ --exclude="*.tmp" \ --link-dest=$LINK \ /data/www/ \ $REMOTE:$SNAP

执行后:

  • 如果文件未改动,$SNAP中只是硬链接,不额外占空间;

  • 修改过的文件,rsync 会复制新实体,未修改的继续链接到current,实现快照 + 增量合二为一。

4.4 自动化脚本(/usr/local/bin/rsync_www.sh)

#!/bin/bash # 变量区 SRC=/data/www/ REMOTE=root@10.0.0.20 BASE=/backup/www DATE=$(date +%F_%H-%M) LOG=/var/log/rsync_www.log # 1. 先同步到 current(镜像) rsync -avP --delete --exclude='*.log' --exclude='*.tmp' \ $SRC $REMOTE:$BASE/current >> $LOG 2>&1 # 2. 再基于 current 做硬链接快照 ssh $REMOTE "mkdir -p $BASE/snapshots/$DATE" rsync -avP --link-dest=$BASE/current \ $SRC $REMOTE:$BASE/snapshots/$DATE >> $LOG 2>&1 # 3. 只保留最近 7 天快照 ssh $REMOTE "find $BASE/snapshots -maxdepth 1 -type d -mtime +7 -exec rm -rf {} +" echo "[$DATE] www backup finished" >> $LOG

赋可执行权限
chmod +x /usr/local/bin/rsync_www.sh

4.5 加入定时任务(crontab -e)

# 每天 02:30 执行 30 2 * * * /usr/local/bin/rsync_www.sh >/dev/null 2>&1

4.6 一键还原(演练灾难恢复)

# 假设 A 节点 /data/www 被误删 rsync -avP \ root@10.0.0.20:/backup/www/current/ \ /data/www/

或者回滚到 3 天前的快照

rsync -avP \ root@10.0.0.20:/backup/www/snapshots/2025-12-13_02-30/ \ /data/www/

五、daemon 模式(873 端口)— 多人共享备份仓库

场景:

  • 需要匿名只读 or 账号认证;

  • 多部门共用一台备份服务器;

  • 不想开 SSH 账号。

5.1 服务端配置(B 节点)

# 安装 yum -y install rsync-daemon # CentOS # 或 apt install rsync # Ubuntu 已集成 daemon # 配置文件 /etc/rsyncd.conf cat >/etc/rsyncd.conf <<'EOF' uid = nobody gid = nobody use chroot = yes max connections = 20 log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock [wwwbackup] path = /backup/www/current comment = WWW mirror read only = yes auth users = backup secrets file = /etc/rsyncd.secrets EOF # 账号密码 echo 'backup:123456' > /etc/rsyncd.secrets chmod 600 /etc/rsyncd.secrets # 启动并开机自启 systemctl enable --now rsyncd

5.2 客户端拉取(任意机器)

# 列出模块 rsync rsync://10.0.0.20/ # 下载 rsync -avP rsync://backup@10.0.0.20/wwwbackup/ /tmp/test/

六、常见问题与解答(FAQ)

问题现象解决
1. 出现Permission denied (publickey)定时任务失败确认 crontab 里使用绝对路径SSH_AUTH_SOCK,或在脚本里ssh-agent
2.--delete误删文件目标被清空--filter保护关键目录,或先不做--delete,确认日志后再加
3. 断网后重新同步慢从头开始校验确保-P参数,并升级 rsync ≥3.2 支持xxh128校验,更快
4. 硬链接快照仍占双倍空间du -sh显示变大使用du -sh --apparent-size查看逻辑大小;确认文件是否真的改动
5. 文件名空格/中文失败报错file has vanished使用-s(–protect-args)或IFS=$'\n'循环

七、实践建议与最佳实践

  1. 3-2-1 原则:至少 3 份副本,2 种介质,1 份异地。rsync 解决“1 份异地”。

  2. 先做恢复演练:备份≠能恢复,每月随机抽快照还原一次。

  3. 带宽限速:白天业务高峰加--bwlimit=20m避免占满上行。

  4. 排除清单集中管理:把--exclude-from=/etc/rsync.exclude写进文件,方便 Git 版本化。

  5. 监控日志 + 告警tail -n 5 /var/log/rsync_www.log | grep -q 'finished' || alert

  6. 使用rsync + btrfs/zfs快照:可节省 50%+ 空间,秒级回滚。

  7. 加密传输

    • 远程 shell 模式默认走 SSH,已加密;

    • daemon 模式需配合 stunnel 或 VPN,否则明文。

  8. 大文件优化
    -W(whole file)局域网千兆时可关闭块校验,直接全文件传输更快。


八、总结与应用场景

  • 核心回顾
    rsync 通过“滚动校验和 + 差异块”实现增量,配合--delete做镜像、--exclude过滤垃圾、--link-dest零成本快照,是 Linux 世界最经济实用的“备份瑞士军刀”。

  • 典型应用场景

    1. 网站代码/图片异地热备;

    2. MySQL 物理备份(先xtrabackup→ rsync 到灾备机);

    3. 日志归集:各节点rsync --append集中到日志中心;

    4. 虚拟机镜像:凌晨快照后 rsync 到远程 NAS;

    5. 私人网盘:家用树莓派 + 移动硬盘,rsync 拉回公司数据。

  • 下一步学习

    • 结合inotify/rsyncd做实时的“触发式同步”;

    • 使用rsync + lsyncd达到 Dropbox 同秒级体验;

    • 对比rclone(支持对象存储)(本系列第 201 篇)。

把今天这份脚本直接搬到生产环境,你的数据就拥有了“时间回溯”超能力。祝你备份愉快,永不跑路!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/3 5:20:34

AI Agent 三大核心组件解析:规划、记忆与工具使用,构建真正智能体

如果 LLM 是 AI 的大脑&#xff0c;那么规划、记忆与工具使用就是它的“心智能力”&#xff0c;让它从对话机器人成长为真正的智能协作者。 在上一篇文章中&#xff0c;我们讨论了 AI Agent 的基本概念与趋势。今天&#xff0c;我们将深入 Agent 的核心架构&#xff0c;解析其三…

作者头像 李华
网站建设 2026/5/2 2:19:17

可靠系统集成iPaaS厂家:选对合作伙伴,筑牢数字化基石

在数字化转型浪潮席卷各行各业的今天&#xff0c;企业业务运营与信息技术的深度融合已成为必然趋势。然而&#xff0c;面对种类繁多的硬件设备、日趋复杂的软件应用以及异构化的网络环境&#xff0c;如何将这些独立的系统组件有机整合&#xff0c;形成一个高效、稳定、可扩展的…

作者头像 李华
网站建设 2026/5/2 0:23:41

S25FL256S flash 读写实现 —— 基于Genesys2

RDID实现、顶层文件及管脚约束等可参考上一篇文章&#xff1a; S25FL256S flash 读取ID实现 —— 基于Genesys2-CSDN博客 相关说明&#xff1a; flash在spi_sck上升沿采样mosi&#xff0c;在下降沿输出miso spi_sck为主时钟频率一半&#xff0c;这里为40MHz 接下来介绍FLASH 读…

作者头像 李华
网站建设 2026/5/1 16:07:11

百度网盘直链解析终极指南:轻松突破限速实现高速下载

百度网盘直链解析终极指南&#xff1a;轻松突破限速实现高速下载 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘的龟速下载而烦恼吗&#xff1f;baidu-wangpan…

作者头像 李华
网站建设 2026/5/3 12:32:19

2000元 =10次酒店入住+受益权?酒店 RWA 破解重资产困局

Hallo&#xff0c;我是老叶。“每月房租 30 万、人工 20 万&#xff0c;空置率一高就亏&#xff0c;重资产压得喘不过气……” 这是 90% 酒店老板的日常焦虑。现在&#xff0c;区块链技术带来的RWA&#xff08;真实世界资产&#xff09;数字化方案&#xff0c;正通过一种叫“NF…

作者头像 李华
网站建设 2026/5/1 6:27:46

Unity游戏自动翻译终极完整指南:从零配置到实战精通

Unity游戏自动翻译终极完整指南&#xff1a;从零配置到实战精通 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator是一款专为Unity游戏打造的自动翻译解决方案&#xff0c;支持多种翻…

作者头像 李华