Linux rsync 增量备份高级技巧

落芳吖_2376

落芳吖_2376

2026-02-15

296人浏览

原创

rsync 默认基于文件大小和修改时间增量同步,用 -a --delete 保持一致;mtime 不可靠时加 --checksum;排除文件用 --exclude,慎用 --delete-excluded;断点续传需 --partial --inplace;SSH 密钥应限制命令范围确保安全。

linux rsync 增量备份高级技巧

rsync 怎么只传变化的文件,不重复拷贝整个目录

rsync 默认就是增量同步,但前提是得用对参数。核心是 --archive(或简写 -a)配合 --delete(如果要保持目标完全一致),它靠文件大小 + 修改时间(mtime)判断是否跳过。如果源文件只是内容变了但 mtime 没更新(比如某些容器内操作、NFS 挂载点),就会漏同步。

  • 用 --checksum 强制按内容比对:慢但准,适合 mtime 不可靠场景
  • 避免单独用 --update:它只跳过「目标更新时间比源新」的文件,容易误判
  • 注意时区和系统时间偏差:源和目标机器时间差超过 2 秒,mtime 判断就可能出错

示例:rsync -a --delete --checksum /data/ user@backup:/backup/data/

排除临时文件和日志,但又不误删目标端已有文件

--exclude 和 --delete-excluded 容易混淆。前者只是不同步匹配项,后者会把目标端已存在、但当前被 exclude 的文件删掉——这很危险。

  • 排除但保留目标端旧文件:只用 --exclude='*.log' 或 --exclude='/tmp/'
  • 真要清理目标端的排除项:加 --delete-excluded,但务必搭配 --dry-run 先预览
  • 排除规则路径以 / 开头表示从根开始(相对于同步路径),不加则是通配匹配所有层级

常见误配:--exclude 'log/' 会匹配 /var/log/ 和 /app/logs/,而 --exclude '/log/' 只匹配同步根下的 log/ 目录

备份大文件时断网重连,怎么续传不从头开始

rsync 本身不支持断点续传大文件(比如单个 50GB 的虚拟机镜像),因为默认用的是「整体文件校验 + 整体传输」逻辑。但可以靠两个参数缓解:

Linux Security Scanner
Linux Security Scanner

Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...

下载
  • --partial:传输中断后保留已传部分,下次接着传(关键)
  • --progress:看实时进度,方便判断是否卡住
  • 必须配合 --inplace 才能真正覆盖原文件(否则 rsync 先写临时文件再 rename,续传时临时文件名变了就失效)

注意:--inplace 有风险——传输中文件处于损坏状态,且不支持硬链接保全;生产环境慎用,优先考虑分卷压缩或改用 rsync --append-verify(适用于追加型文件如日志)

远程备份走 SSH,怎么避免每次输密码还保证密钥安全

直接写密码在脚本里是反模式。正确做法是用 SSH 密钥 + 限制命令执行范围。

  • 生成无口令密钥:ssh-keygen -t ed25519 -f ~/.ssh/rsync_backup
  • 在目标服务器的 ~/.ssh/authorized_keys 中,给公钥加命令前缀:
    command="rsync --server --sender -vlogDtpre.iLs . /data",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-ed25519 AAAA...
  • 这样即使密钥泄露,攻击者也只能执行这条 rsync 命令,不能登录 shell

别漏掉 --rsync-path:如果目标 rsync 不在 $PATH 默认位置,要用 rsync -e "ssh -i ~/.ssh/rsync_backup" --rsync-path="/usr/local/bin/rsync" ...

实际用的时候,最常被忽略的是 mtime 同步前提和 SSH 命令白名单的组合——一个影响数据一致性,一个影响安全性,两者都松动,备份就既不可信也不可控。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
append用法
append用法

append是一个常用的命令行工具,用于将一个文件的内容追加到另一个文件的末尾。想了解更多append用法相关内容,可以阅读本专题下面的文章。

2023.10.25

618

4

python中append的用法
python中append的用法

在Python中,append()是列表对象的一个方法,用于向列表末尾添加一个元素。想了解更多append的更多内容,可以阅读本专题下面的文章。

2023.11.14

1496

8

python中append的含义
python中append的含义

本专题整合了python中append的相关内容,阅读专题下面的文章了解更多详细内容。

2025.09.12

2824

8

数据库Delete用法
数据库Delete用法

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

2023.11.13

3291

4

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

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

2023.12.29

1005

3

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

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

2023.06.21

4330

4

如何安装LINUX
如何安装LINUX

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

2023.06.29

3653

10

linux find
linux find

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

2023.06.30

2913

5

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

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

2023.07.05

7170

7

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习