用 rsync 做可靠的增量备份

举报
yd_257918670 发表于 2026/10/28 06:27:51 2026/10/28
【摘要】 用 rsync 做可靠的增量备份日常备份不必每次整盘拷贝。rsync 只传输变化的部分,还能保留权限与时间戳,并支持断点续传,适合把项目目录同步到远端机器或另一块磁盘。理解几个常用参数后,就能搭一套既省流量又可控的备份习惯。 基本用法把本地 ~/projects 同步到远端(需已能 SSH 登录):rsync -avz --progress ~/projects/ user@host:/b...

用 rsync 做可靠的增量备份

日常备份不必每次整盘拷贝。rsync 只传输变化的部分,还能保留权限与时间戳,并支持断点续传,适合把项目目录同步到远端机器或另一块磁盘。理解几个常用参数后,就能搭一套既省流量又可控的备份习惯。

基本用法

把本地 ~/projects 同步到远端(需已能 SSH 登录):

rsync -avz --progress ~/projects/ user@host:/backup/projects/
  • -a:归档模式(递归,并尽量保留权限、属主、时间戳等)
  • -v:输出过程,方便确认每次改动了什么
  • -z:传输时压缩,跨公网时通常更省带宽
  • 源路径末尾的 / 表示「同步目录里的内容」;不加 / 会把目录本身一并拷过去

第一次同步往往最久,之后只会推送差异,速度会明显快很多。

更稳妥的日常备份

rsync -avz --delete --partial --bwlimit=8192 \
  ~/projects/ user@host:/backup/projects/
  • --delete:源端已删的文件,目标端也删除(做镜像时有用;误删风险高,务必先 dry-run)
  • --partial:大文件中断后可续传,不必从头再来
  • --bwlimit=8192:大约限制 8MB/s,避免占满上行影响其他业务

第一次务必加 --dry-run(可写成 -n)看清会改哪些文件:

rsync -avzn --delete ~/projects/ user@host:/backup/projects/

确认列表无误后再去掉 -n 真正执行。养成这个习惯,比事后从误删里恢复省事得多。

排除无关文件

构建产物、依赖目录通常不必进备份:

rsync -avz \
  --exclude '.git/' \
  --exclude 'node_modules/' \
  --exclude 'dist/' \
  --exclude '*.tmp' \
  ~/webapp/ user@host:/backup/webapp/

规则多了可以放进 excludes.txt,再用 --exclude-from=excludes.txt。排除得当,既能缩短同步时间,也能减少远端磁盘占用。

定时执行与日志

写成脚本 /usr/local/bin/backup-projects.sh:

#!/bin/bash
set -euo pipefail
LOG=/var/log/backup-projects.log
{
  echo "=== $(date -Iseconds) start ==="
  rsync -avz --delete --partial \
    /home/you/projects/ backup@nas:/volume1/backups/projects/
  echo "=== $(date -Iseconds) done ==="
} >>"$LOG" 2>&1

再用 systemd timer 或 cron 每天凌晨跑一次。失败时优先看日志末尾几行,定位是网络、权限还是磁盘空间问题,比盲目重跑更有效。

注意点

  1. 先 dry-run:尤其带 --delete 时,避免远端重要数据被误删。
  2. 权限与属主:跨用户同步时 -a 可能改不了属主,必要时在目标机用 --chown 或事后 chown。
  3. 密钥登录:生产环境用 SSH key,不要把密码写进脚本或定时任务。
  4. 首次全量会久:之后增量通常很快;可用 --info=progress2 看总体进度。
  5. 重要数据建议多副本:rsync 是同步工具,不是版本库;关键目录可再保留按日期命名的快照目录,或配合硬链接快照做简单历史版本。

掌握这几条,日常项目备份就能既省流量又可控。改备份策略前先 dry-run,往往能少踩很多坑;稳定跑一段时间后,再考虑是否加校验与告警。

小练习

找一个不超过几百 MB 的项目目录,先对空目录做一次 dry-run,再真正同步到本机另一个路径(例如 /tmp/rsync-demo/)。改几个文件后再跑一遍,观察传输量是否明显下降。熟悉之后,再把目标换成 NAS 或云主机,并加上排除规则与日志。这样比一上来就对着生产数据试 --delete 安全得多。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。