====== Restic 备份 ======
restic 是一个 Go 语言编写的备份工具,特点是快速、高效而且安全。(([[https://www.escapelife.site/posts/912084a4.html|Restic 备份快速上手]]))
(([[https://ld246.com/article/1601527149440|官方文档中文翻译]]))
(([[https://www.sklinux.com/posts/devops/%E9%AB%98%E6%95%88%E5%A4%87%E4%BB%BD%E5%B7%A5%E5%85%B7restic%E6%8E%A8%E8%8D%90/|高效备份神器restic]]))
安装 ''%%sudo apt-get install restic
%%''
===== 免密登录 =====
先在服务器 Ionos 搞个免密登录到主力服务,
ssh-keygen # 之前如果已经生成过就不用在生成
ssh-copy-id -i ~/.ssh/id_rsa.pub mai@mainserver
===== 创建仓库 =====
创建一个位于主力服务器的备份仓库
restic -r sftp:mai@mainserver:/home/mai/mongobackup/dokuwiki/restic-repo init
===== 备份数据 =====
备份SSL证书的整个目录到仓库中去。生成一个 ''%%75ee283a%%'' 的snapshot。
restic -r sftp:mai@mainserver:/home/mai/mongobackup/dokuwiki-repo --verbose backup /etc/letsencrypt
created new cache in /root/.cache/restic
lock repository
load index files
start scan on [/etc/letsencrypt]
start backup on [/etc/letsencrypt]
scan finished in 0.642s: 27 files, 38.355 KiB
Files: 27 new, 0 changed, 0 unmodified
Dirs: 1 new, 0 changed, 0 unmodified
Data Blobs: 23 new
Tree Blobs: 2 new
Added to the repo: 31.410 KiB
processed 27 files, 38.355 KiB in 0:01
snapshot 75ee283a saved
如果想查看一下snapshot的话
restic -r sftp:mai@mainserver:/home/mai/mongobackup/dokuwiki-repo snapshots
enter password for repository:
repository 4c702226 opened successfully, password is correct
ID Time Host Tags Paths
------------------------------------------------------------------------
75ee283a 2021-07-30 20:01:34 serverionos /etc/letsencrypt
------------------------------------------------------------------------
1 snapshots
再把 Dokuwiki 网站备份进去
restic -r sftp:mai@mainserver:/home/mai/mongobackup/dokuwiki/dokuwiki-repo --verbose backup /home/ubuntu/www/html
# 结果是81MB左右,原始数据是108MB,tar 备份有37MB作用
Added to the repo: 81.818 MiB
processed 12694 files, 108.155 MiB in 0:22
snapshot af728dda saved
修改了一下这个帖子,再次运行这个备份命令
restic -r sftp:mai@mainserver:/home/mai/mongobackup/dokuwiki/restic-repo --verbose backup /home/ubuntu/www/html
# 结果只更新了一个文件,传递了大概194KB的数据。
Files: 1 new, 36 changed, 12658 unmodified
Dirs: 0 new, 3 changed, 0 unmodified
Data Blobs: 25 new
Tree Blobs: 4 new
Added to the repo: 194.346 KiB
processed 12695 files, 108.158 MiB in 0:02
snapshot 7e734cf6 saved
再备份一个mongodb,建立一个 1.26GB左右的仓库,原数据大概1.5GB的样子
restic -r /home/mai/mongobackup/mongo-repo init
# 记得加sudo,否则没有访问权限
sudo restic -r /home/mai/mongobackup/mongo-repo --verbose backup /mnt/mongodb/data/
===== 删除快照 =====
# 指定快照ID来删除快照
$ restic -r /srv/restic-repo forget bdbd3439
enter password for repository:
removed snapshot d3f01f63
# 虽然上述命令将快照删除了,但文件引用的数据仍然存储在存储库中
# 要清除未引用的数据,必须运行prune命令(之后存储库就变小了)
$ restic -r /data/restic-repo prune
enter password for repository:
repository 33002c5e opened successfully, password is correct
如果有很多快照,就要按时间清理。如下命令,只保留最近7天、8周、以及每月一份的备份。
restic forget --dry-run --keep-daily 7 --keep-weekly 8 --keep-monthly 24
# 只保留两个快照
restic -r /backup/ forget --keep-last 2 --prune
===== 恢复快照 =====
# 恢复ID为79766175的快照, 也可以通过 latest 的参数恢复最后一个备份的快照
restic -r /srv/restic-repo restore 79766175 --target /tmp/restore-work
====== Rclone 备份 ======
安装 rclone 工具
curl https://rclone.org/install.sh | sudo bash
直接搭配rclone:''%%restic -r rclone:foo:bar init%%''
Linux 下挂载的方法 (([[https://www.ioiox.com/archives/108.html|Rclone 安装配置及挂载 OneDrive]]))
(([[https://qianjie.space/posts/1010525b.html#!|rclone安装]]))
====== OneDrive as FTP-Server ======
利用 [[ https://my.couchdrop.io|couchdrop]] 将onedrive网盘变成一个ftp服务器。(([[https://community.couchdrop.io/hc/en-us/articles/360001241095-Microsoft-OneDrive-SFTP-FTP-SCP-and-Rsync|Microsoft OneDrive - SFTP, FTP, SCP and Rsync]]))
# connect sftp
sftp goldentianya@sftp.couchdrop.io
# upload with scp
scp newfile goldentianya@scp.couchdrop.io:
# upload rsync
rsync -a -e ssh newfile goldentianya@rsync.couchdrop.io:
{{tag>文件系统}}