ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

restic 数据备份实战:3 分钟建好加密仓库,让备份每天自动跑

restic 数据备份实战:3 分钟建好加密仓库,让备份每天自动跑 restic 数据备份实战3 分钟建好加密仓库让备份每天自动跑【免费下载链接】resticFast, secure, efficient backup program项目地址: https://gitcode.com/GitHub_Trending/re/restic重装系统前你想把家目录里的文档和配置先存一份重装完成后又希望能从中挑出某几个文件单独取回。restic 就是为这件事设计的一个用 Go 编写的命令行数据备份工具它把文件加密后写入一个仓库repository存放加密备份数据的存储位置每备份一次就生成一个快照snapshot某时刻目录状态的记录之后可以按整份、目录或单文件三种粒度取回。为什么是 restic去重、加密、抗中断 restic 和复制一份压缩包式的备份不同差异在三个具体机制上。内容寻址的去重与压缩第二次备份几乎零流量。restic 把文件切成小块、按内容哈希存储相同内容只存一份。官方文档给出的实测例子首次备份 1.720 GiB 的数据实际写入仓库 1.200 GiB压缩后占 1.103 GiB对同一目录立即再备一次新增 0 B——没变化的块直接跳过。文件多、改动少的目录备份速度和流量都会明显受益。仓库整体加密后端拿到的只是一堆密文。数据在上传前完成加密仓库目录放在哪里本地磁盘、对象存储、SFTP都不影响安全性丢失密码则数据无法解密所以密码本身要当作密钥保管。仓库支持多个访问密钥用restic key子命令添加、移除或改密详见加密文档。仓库格式抗中断。backup或prune在任何时刻被打断都不会损坏仓库最多需要手动释放一次锁。这对定时任务被 kill、网络断开的场景很重要。五分钟完成第一次备份选后端、init、backup先决定仓库放在哪。仓库就是一个目录本地路径直接可用远端后端在-r参数里写协议前缀例如sftp:userhost:/srv/restic-repo、s3:s3.us-east-1.amazonaws.com/bucket、rest:http://host:8000/。以 S3 为例先在控制台建一个空存储桶下面用本地目录/srv/restic-repo走最短路径设置仓库位置与密码的环境变量然后初始化仓库。export RESTIC_REPOSITORY/srv/restic-repo export RESTIC_PASSWORDyour-strong-password restic initinit只跑一次成功后目录里会多出 key、config 等元数据文件。接下来备份第一个目录并用snapshots验证restic backup ~/work restic snapshots输出里每个快照有一个十六进制短 ID 和一条snapshot xxxx saved提示看到它就说明这次备份落盘成功。备份过程中 restic 会实时报告扫描文件数、写入量第一次是完整写入第二次再跑backup会显示几乎不新增数据这是去重在起作用。更多后端配置和排除规则见仓库准备文档与备份文档。用 cron 让备份自动执行forget 控制保留策略 备份要长期运行需要三件事定时触发、控制体积、定期体检。定时把仓库密码写进一个仅属主可读的文件用RESTIC_PASSWORD_FILE指向它脚本里就不需要交互输入了restic backup ~/work restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune restic check在 crontab 里加一行0 3 * * * /path/to/backup.sh即可每天凌晨三点执行。保留策略forget按--keep-*规则删除过期快照--prune在其后再回收那些只被已删快照引用的数据块——只 forget 不 prune仓库不会变小。注意 prune 期间仓库加锁备份无法进行所以把它排在每天备份之后的低峰时段。先用--dry-run跑一遍确认要删的快照列表符合预期再真删。完整规则见forget 文档。体检restic check校验元数据结构加--read-data则把整个仓库读回来逐块验证慢但彻底。prune 之后建议跑一次 check确认内部结构没有受损。真正用到备份的那一刻三种恢复粒度误删文件后先用restic ls latest或restic find 文件名在快照里确认路径然后按需要取回的粒度选一种方式restic restore latest --target /tmp/restore restic restore latest:/home/user/work --target /tmp/restore restic restore latest --target /tmp/restore --include /home/user/work/notes.txt第一行恢复整份最新快照到/tmp/restore第二行用快照:子目录语法只恢复其中某个目录第三行用--include只恢复单个文件。三条命令都先落到--target指定的新目录不会直接覆盖现有文件确认无误后再手动归位。latest也可以换成具体快照 ID配合--host、--path筛选特定机器或路径的快照详见恢复文档。避坑清单密码、快照膨胀、速度与损坏忘记仓库密码密码即密钥丢了数据无法恢复init 之后立刻把密码存进密码管理器多台机器访问同一仓库时用restic key add添加独立密钥比共享一个密码更好管理。快照越积越多、仓库只涨不缩forget 必须搭配--prune才能真正回收空间删除前先--dry-run预览。备份速度慢第一次全量慢是正常的之后增量只传变化块仍偏慢时可临时调低--limit-upload并发或检查网络压缩默认级别是 auto一般无需手动干预。怀疑仓库数据损坏先把整个仓库复制一份再跑restic check --read-data定位索引坏了用restic repair index重建流程见排错文档。恢复时覆盖了原文件restore 默认只写入--target目录养成先恢复到临时目录、核对后再移动的习惯即可避免。三步落地你的第一个 restic 备份选一个仓库位置本地目录或对象存储restic init并保存好密码。跑一次restic backup用restic snapshots确认快照已生成。把 backup、forget --prune、check 写进 crontab让备份每天自己跑。做完这三步你就有了一个加密、去重、可自动维护的数据备份体系剩下的find、diff、copy等命令等真正用到时再查文档也不迟。【免费下载链接】resticFast, secure, efficient backup program项目地址: https://gitcode.com/GitHub_Trending/re/restic创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表