目录

Restic 备份

restic 是一个 Go 语言编写的备份工具,特点是快速、高效而且安全。1) 2) 3)

安装 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

USER
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 下挂载的方法 4) 5)

OneDrive as FTP-Server

利用 couchdrop 将onedrive网盘变成一个ftp服务器。6)

# connect sftp
sftp [email protected]
# upload with scp
scp newfile [email protected]:
# upload rsync
rsync -a -e ssh newfile [email protected]: