news 2026/5/9 7:08:18

【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/4/28 9:53:39

AutoGPT 深度解析:告别提示工程,迎接自主 AI 代理时代

如果你还在反复调试 prompt 与 GPT 对话&#xff0c;那你已经落后了——AutoGPT 正在让 AI 接管思考与执行的全过程。 在上一篇文章中&#xff0c;我们深入探讨了 AI Agent 的三大核心组件&#xff1a;规划、记忆与工具使用。今天&#xff0c;我们将聚焦于一个现象级的开源项目…

作者头像 李华
网站建设 2026/5/7 4:36:34

Bypass Paywalls Clean终极指南:解锁全球付费内容的技术方案

在信息获取日益重要的今天&#xff0c;付费墙已成为阻碍知识传播的主要障碍。Bypass Paywalls Clean作为一款专业级浏览器扩展&#xff0c;通过创新的技术手段帮助用户突破这一限制&#xff0c;实现全球优质内容的无障碍访问。本指南将深入解析其工作原理、安装配置及最佳实践。…

作者头像 李华
网站建设 2026/5/5 12:20:07

Excalidraw核心功能实现原理揭秘

Excalidraw 核心功能实现原理揭秘 在数字白板工具层出不穷的今天&#xff0c;大多数产品追求的是精准、规整与自动化。而 Excalidraw 却反其道而行之——它用“不完美”的手绘风格&#xff0c;还原了人类最原始的创作直觉&#xff1a;草图、涂鸦、即兴表达。这种看似简单的视觉…

作者头像 李华
网站建设 2026/5/9 0:48:16

树莓派4B能跑LobeChat吗?极限低配环境尝试

树莓派4B能跑LobeChat吗&#xff1f;极限低配环境尝试 在智能家居设备日益复杂的今天&#xff0c;越来越多的极客开始思考&#xff1a;我们能否拥有一台完全属于自己的AI助手——不依赖云端、不上传数据、24小时静音运行&#xff0c;还能用语音对话控制家里的灯和温湿度&#x…

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

从图文到视频,如何用Coze跑通“小红书儿童绘本”的商业闭环?

大家好&#xff0c;我是小肥肠&#xff01;上周的儿童绘本图文教程大家反响热烈&#xff0c;但我也听到了大家的呼声&#xff1a;视频才是现在的流量密码&#xff01;没问题&#xff0c;今天直接安排&#xff01;本期教程教你用 Coze Nano Banana Pro 搭建全自动视频绘本工作流…

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

MQTT网络传输协议巩固知识基础题(1)

1. MQTT 是什么类型的协议? A. 请求-响应协议 B. 发布-订阅协议 C. 点对点协议 D. 广播协议 答案:B 解析: MQTT(Message Queuing Telemetry Transport)是基于发布-订阅模式的轻量级消息传输协议。 2. MQTT 主要设计用于哪种场景? A. 高带宽网络环境 B. 低带宽、高延迟…

作者头像 李华