news 2026/6/15 19:35:36

【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/6/15 11:49:08

通义千问/Qwen接入LobeChat保姆级教程

通义千问/Qwen 接入 LobeChat 实战指南 在企业级 AI 应用快速落地的今天&#xff0c;一个常见痛点浮出水面&#xff1a;我们手握像通义千问&#xff08;Qwen&#xff09;这样强大的语言模型&#xff0c;却依然依赖命令行、脚本或 Postman 来调用 API。非技术人员难以参与&#…

作者头像 李华
网站建设 2026/6/14 20:34:18

BBDown技术解析:命令行B站视频下载的完整解决方案

BBDown技术解析&#xff1a;命令行B站视频下载的完整解决方案 【免费下载链接】BBDown Bilibili Downloader. 一款命令行式哔哩哔哩下载器. 项目地址: https://gitcode.com/gh_mirrors/bb/BBDown BBDown作为一款专业的命令行式B站视频下载工具&#xff0c;为技术爱好者和…

作者头像 李华
网站建设 2026/6/15 13:33:51

BBDown终极指南:轻松掌握B站视频下载的完整方案

BBDown终极指南&#xff1a;轻松掌握B站视频下载的完整方案 【免费下载链接】BBDown Bilibili Downloader. 一款命令行式哔哩哔哩下载器. 项目地址: https://gitcode.com/gh_mirrors/bb/BBDown BBDown作为一款专业的命令行式B站视频下载工具&#xff0c;为技术爱好者和命…

作者头像 李华
网站建设 2026/6/14 15:15:24

单体架构的黄金时代与终结:优势、瓶颈与拆分解构

文章目录单体架构的黄金时代与终结&#xff1a;优势、瓶颈与拆分解构发布、扩展、协作成本拐点深度分析与拆分时机决策框架&#x1f4cb; 目录&#x1f3db;️ 一、单体架构的黄金时代&#x1f4a1; 单体架构的历史地位&#x1f3af; 单体架构的核心价值⚖️ 二、单体架构的隐藏…

作者头像 李华
网站建设 2026/6/15 2:06:16

键盘快捷键大全:提升你在LobeChat的操作效率

键盘快捷键大全&#xff1a;提升你在LobeChat的操作效率 在日常使用 AI 聊天工具时&#xff0c;你是否曾因为频繁点击“发送”按钮而感到操作繁琐&#xff1f;或者在多个会话间来回切换时&#xff0c;鼠标移动打断了你的思考节奏&#xff1f;对于像 LobeChat 这样功能丰富、交互…

作者头像 李华
网站建设 2026/6/15 14:07:28

Vue可视化打印插件hiprint终极使用手册:从零构建专业级打印系统

还在为Vue项目中的打印功能发愁吗&#xff1f;vue-plugin-hiprint让你彻底告别传统打印的繁琐操作&#xff01;这款基于jQuery的打印插件完美支持Vue2和Vue3&#xff0c;通过直观的拖拽设计界面&#xff0c;轻松实现从简单标签到复杂报表的全方位打印需求。 【免费下载链接】vu…

作者头像 李华