ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

restic 备份实战:从初始化仓库到长期保留策略的完整操作

restic 备份实战:从初始化仓库到长期保留策略的完整操作 restic 备份实战从初始化仓库到长期保留策略的完整操作【免费下载链接】resticFast, secure, efficient backup program项目地址: https://gitcode.com/GitHub_Trending/re/restic某次迁移服务器时一台机器的磁盘在克隆完成前就坏了靠的是前一天夜里 restic 自动写入远端的增量备份才把业务数据完整迁了回去。restic 是一款用 Go 编写的加密备份程序把文件按内容分块、去重后加密上传只传变化过的部分让你在任何一台机器上都能恢复出任意历史版本的文件。restic 适合什么样的使用场景一句话定位给一台或多台机器上的重要目录建立一份可加密、可异地存放、带历史版本的备份。个人服务器、团队共享存储、数据库数据文件目录都很合适它不替代实时同步或高可用方案而是回答昨天的数据还在吗这个问题。核心机制按作用分内容寻址分块文件按内容哈希切块未变化的内容块不会重复上传第二次备份通常只传增量全量加密密钥派生自仓库密码服务端看到的是无法解密的密文块连文件清单也一并加密快照模型每次 backup 生成一个快照可单独恢复其中任意文件天然支持回滚到某个时间点多后端存储本地路径、SFTP、REST、S3 兼容对象存储等-r参数切换即可。安装 restic 并确认版本大多数发行版的包管理器都有现成的包。按你机器的实际情况二选一即可另给一种通用兜底。包管理器安装Debian/Ubuntu 用 aptArch 用 pacmanFedora/RHEL 用 dnf命令形式相同sudo apt-get install restic # Debian/Ubuntu 源中的版本macOS 与 Windows 走各自的包管理器brew install resticmacOS和scoop install resticWindows均可这里不再展开。如果系统包版本太旧或想始终跟上游最新版走直接下载官方二进制并加入 PATHrestic self-update # 用二进制自带的更新机制拉取最新稳定版装完先确认能跑起来后面所有步骤都依赖这个可执行文件restic version # 输出版本号即安装成功安装方式细节初始化第一个仓库仓库是存放备份数据的目的地可以是本地目录、SFTP 服务器或 S3 桶。最省事的方式是用两个环境变量固定住仓库地址和密码之后每条命令都不用再传参数export RESTIC_REPOSITORY/srv/restic-repo # 仓库位置本地目录 export RESTIC_PASSWORD换成强密码 # 仓库主密码派生所有加密密钥 restic init # 创建仓库结构并写入初始化密钥成功时终端显示repository 46b08a43 initialized此后restic init会提示仓库已存在——这是预期行为不要重复执行。完成第一次备份并验证可恢复备份一个目录restic backup ~/work # 扫描目录、分块、上传生成第一个快照结束时会打印一行created snapshot xxxxxxxx记下这个短 ID 或直接用latest指代最新快照。验证备份真的能还原比确认备份成功更重要——恢复到一个临时目录再对比是最小闭环restic restore latest --target /tmp/restore-check # 恢复最新快照到临时目录 diff -r ~/work /tmp/restore-check # 与源目录对比无输出即一致查看快照列表确认时间、主机名、标签都符合预期restic snapshots # 表格列出全部快照ID/时间/主机/路径备份与恢复的完整选项深度用法真实备份任务会遇到的四类问题用排除规则控制备份范围遇到目录里混着缓存、构建产物、node_modules这类不该进备份的东西全量上传既浪费带宽也浪费存储。操作优先在待备份目录下放一个.resticignore文件用 gitignore 风格写规则备份时自动读取临时场景也可以直接传参数restic backup ~/work \ --exclude*.log \ # 排除所有 .log 文件 --exclude-file/path/to/rules # 额外加载一份规则文件.resticignore里写**/.git、**/node_modules这类模式即可覆盖子目录。验证备份后用restic ls latest列出快照内的文件树被排除的路径不应出现或恢复单个快照抽查目标目录是否存在。排除模式语法把仓库放到 S3 等远端存储遇到备份和主机放在同一台机器上磁盘坏了备份一起没等于没备。远端对象存储是常见解法。操作以 AWS S3 为例先建好桶并给专用用户配好访问密钥然后只改仓库地址其余命令完全不变export RESTIC_REPOSITORYs3:s3.us-east-1.amazonaws.com/bucket-name # S3 后端地址 export AWS_ACCESS_KEY_IDAKIA... # 专用访问密钥 export AWS_SECRET_ACCESS_KEY... restic init restic backup ~/work其他后端同理只是前缀不同sftp:userhost:/path指向 SFTP 目录rest:http://host:8000/指向 REST 服务器。验证restic check能正常读到远端索引且备份后桶内出现新的 pack 对象文件。各后端的环境准备管理密钥与密码遇到换了管理员、主密码泄露或想给 CI 脚本单独一把只读钥匙。restic 用一个主密码 若干派生密钥的模型改密码不必重传数据。操作restic key add # 为当前密码重新派生一把密钥并写入仓库 restic key list # 列出仓库内全部密钥及创建时间 restic key passwd # 修改仓库主密码旧密钥仍然有效脚本环境建议用RESTIC_PASSWORD_FILE/path/to/password文件存放密码代替裸RESTIC_PASSWORD避免密码出现在进程列表和 shell 历史里。验证restic key list出现新条目且换密码后旧密码仍能访问仓库新旧密钥并存确认无误后再考虑移除旧密钥。加密与密钥模型用 forget 设定保留策略并清理空间遇到快照越攒越多仓库体积膨胀但又不想手工逐个删——删错了就永久丢失数据块引用。操作forget按保留规则挑出要删的快照--prune再把这些快照独有的数据块真正清出仓库restic forget \ --keep-daily 7 \ # 最近 7 天每天保留一个 --keep-weekly 4 \ # 再往前每周保留一个 --keep-monthly 6 \ # 再往前每月保留一个 --prune # 删除快照后回收孤儿数据块删之前建议加--dry-run先看会删掉什么。配合 tag 可以按用途分组例如备份时--tag prod清理时--keep-tag prod只作用于这批快照。验证restic snapshots --short确认剩余快照符合预期restic du查看仓库实际占用--prune后应明显下降。想对比两个时间点之间的文件级变化谁改了、加了、删了用restic diff 40dc1520 latest # 两个快照间的增删改清单forget 选项详解把备份挂成每日定时任务遇到手动备份必然遗忘需要脚本 定时器兜底。操作脚本里把备份 → 清理 → 体检串起来crontab 定时触发#!/bin/bash set -euo pipefail export RESTIC_REPOSITORY/srv/restic-repo export RESTIC_PASSWORD_FILE/etc/restic/password restic backup ~/work ~/documents restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune restic check # 顺带体检失败时日志里可见# crontab -e每天 03:00 执行 0 3 * * * /opt/scripts/backup.sh /var/log/restic-backup.log 21验证第二天restic snapshots里多出新快照且日志文件有完整执行记录。脚本化建议排障与体检先诊断后修复再调优诊断——仓库有任何异常先跑 check它负责回答问题在哪restic check # 校验快照、索引与 pack 的引用完整性速度快 restic check --read-data # 额外下载并解密每个数据块最彻底耗时与流量成正比修复——check 报出具体缺失后再对症下手而不是直接重跑restic repair index # 索引损坏或缺失扫描仓库重建索引 restic repair packs # pack 文件部分损坏抢救可恢复的内容 restic repair snapshots # 快照元数据损坏从现存数据块重建快照修复前先把仓库做一次只读拷贝repair 类命令都会写入仓库。调优——备份慢或带宽紧张时按频率从高到低试export RESTIC_CACHE_DIR/data/fast-disk/.cache/restic # 缓存放本地快盘减少远端重复读 restic backup ~/work --limit-upload 80 --limit-download 40 # 限制并发上传/下载连接数 restic backup ~/work --compression max # 最高压缩CPU 换流量默认 medium 通常够顺序建议先调--limit-*看是不是后端限速再考虑压缩级别压缩max对已压缩过的文件视频、zip几乎无收益。故障排查思路收尾restic 的模型很简单一个加密仓库 一组快照 保留策略单机到几十台机器、数据量到 TB 级都能跑得动。下一步值得做的事把仓库迁到异地后端S3/SFTP做灾备、用restic copy做仓库间迁移、在备份脚本里加 check 并把结果接到告警渠道让仓库健康状态从想起来才看变成异常必知。备份参数调优参考【免费下载链接】resticFast, secure, efficient backup program项目地址: https://gitcode.com/GitHub_Trending/re/restic创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表