0

0

如何同步Linux目录 rsync增量备份实战

P粉602998670

P粉602998670

发布时间:2025-08-11 13:40:02

|

1040人浏览过

|

来源于php中文网

原创

rsync 可实现高效目录增量同步与备份,答案为:使用 rsync 结合 -a、-v、--delete 等参数进行本地或远程同步,1. 本地同步需注意源路径末尾斜杠含义;2. 可通过 --exclude 或 --exclude-from 排除特定文件;3. 远程同步使用 -e ssh 支持加密传输,可指定端口;4. 配合 --delete 实现镜像备份,建议先用 --dry-run 模拟;5. 结合 cron 定时执行脚本实现自动化;6. 使用 --backup --suffix 保留旧版本文件;7. 利用 --link-dest 实现快照式备份节省空间;8. 需监控磁盘空间并确保运行用户有足够权限,最终构建稳定可靠的备份体系。

如何同步Linux目录 rsync增量备份实战

在Linux系统运维中,目录同步和增量备份是常见需求。

rsync
是一个强大且高效的工具,支持本地和远程数据同步,具备增量备份、断点续传、权限保留等特性。下面通过实战场景,详细介绍如何使用
rsync
实现目录的增量同步与备份。


一、rsync 增量同步原理

rsync
的核心优势在于“增量同步”:它不会每次都复制全部文件,而是通过对比源目录和目标目录的文件大小、修改时间或校验和,仅传输发生变化的部分(甚至文件的某一部分),从而大幅节省带宽和时间。

它使用“rsync算法”实现差异同步,适用于:

  • 本地目录同步
  • 远程服务器备份
  • 定时自动备份(结合 cron)

二、基本语法与常用参数

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

常用参数说明:

  • -a
    :归档模式,保留权限、时间戳、软链接、递归等(最常用)
  • -v
    :显示详细过程(verbose)
  • -z
    :压缩传输数据(适合远程)
  • -h
    :以人类可读格式显示
  • --delete
    :删除目标中源不存在的文件(保持完全一致)
  • --exclude
    :排除特定文件或目录
  • -P
    :显示进度并支持断点续传(等价于
    --partial --progress

三、实战场景示例

场景1:本地目录增量同步

/data/source/
同步到
/backup/target/

rsync -av /data/source/ /backup/target/
注意:源路径末尾的 / 很关键。 /source/ 表示同步目录下的内容 /source 表示同步整个目录本身

场景2:排除临时文件和日志

避免同步缓存或日志文件:

rsync -av --exclude='*.log' --exclude='tmp/' --exclude='cache/' /data/source/ /backup/target/

也可以使用文件方式排除:

rsync -av --exclude-from='/path/to/exclude-list.txt' /data/source/ /backup/target/

exclude-list.txt
内容示例:

*.tmp
*.log
/temp/
/cache/
.DS_Store

场景3:远程备份到另一台服务器

将本地数据同步到远程服务器的

/backup/
目录:

rsync -avz -e ssh /data/source/ user@192.168.1.100:/backup/target/
  • -z
    :压缩传输
  • -e ssh
    :通过 SSH 加密传输(默认)

若使用非标准 SSH 端口(如 2222):

LALALAND
LALALAND

AI驱动的时尚服装设计平台

下载
rsync -avz -e "ssh -p 2222" /data/source/ user@192.168.1.100:/backup/target/

场景4:保持目标目录与源完全一致(镜像备份)

使用

--delete
实现镜像同步,删除目标中多余的文件:

rsync -av --delete /data/source/ /backup/target/

⚠️ 警告:此操作有风险,建议首次使用前加

--dry-run
模拟执行:

rsync -av --delete --dry-run /data/source/ /backup/target/

可预览将要执行的操作,确认无误后再去掉

--dry-run


四、自动化备份:结合 cron 定时执行

创建备份脚本

/usr/local/bin/backup.sh

#!/bin/bash
SOURCE="/data/source/"
TARGET="/backup/target/"
LOGFILE="/var/log/rsync-backup.log"
EXCLUDE="/etc/rsync-exclude.txt"

DATE=$(date +"%Y-%m-%d %H:%M:%S")
echo "[$DATE] 开始同步..." >> $LOGFILE

rsync -av --delete --exclude-from="$EXCLUDE" "$SOURCE" "$TARGET" >> $LOGFILE 2>&1

RESULT=$?
if [ $RESULT -eq 0 ]; then
    echo "[$(date)] 同步成功" >> $LOGFILE
else
    echo "[$(date)] 同步失败,错误码: $RESULT" >> $LOGFILE
fi

赋予执行权限:

chmod +x /usr/local/bin/backup.sh

添加定时任务(每天凌晨2点执行):

crontab -e

添加行:

0 2 * * * /usr/local/bin/backup.sh

五、进阶技巧与注意事项

  • 使用

    --backup
    --suffix
    实现版本保留

    可保留被覆盖的旧文件:

    rsync -av --backup --suffix=_bak /source/ /target/
  • 使用

    --link-dest
    实现“快照式”备份
    节省空间,类似 rsnapshot 的原理:

    DST="/backup/snapshots"
    TODAY="$DST/$(date +%Y%m%d)"
    YESTERDAY="$DST/$(date -d yesterday +%Y%m%d)"
    
    rsync -av --link-dest="$YESTERDAY" /data/source/ "$TODAY/"

    若前一天快照存在,未修改文件会硬链接复用,节省空间。

  • 确保目标磁盘有足够空间
    增量备份虽高效,但长期运行仍需监控磁盘使用。

  • 权限问题
    若涉及系统文件,建议用

    root
    或具备足够权限的用户运行。


基本上就这些。

rsync
看似简单,但灵活组合参数后功能非常强大。掌握好增量同步、排除规则、远程传输和自动化,就能构建稳定可靠的备份体系。不复杂,但细节决定成败。

相关专题

更多
数据库Delete用法
数据库Delete用法

数据库Delete用法:1、删除单条记录;2、删除多条记录;3、删除所有记录;4、删除特定条件的记录。更多关于数据库Delete的内容,大家可以访问下面的文章。

269

2023.11.13

drop和delete的区别
drop和delete的区别

drop和delete的区别:1、功能与用途;2、操作对象;3、可逆性;4、空间释放;5、执行速度与效率;6、与其他命令的交互;7、影响的持久性;8、语法和执行;9、触发器与约束;10、事务处理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

209

2023.12.29

页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

402

2023.08.14

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1349

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

702

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

294

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

776

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

572

2023.07.06

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

43

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.3万人学习

Git 教程
Git 教程

共21课时 | 2.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号