lala.im:使用Restic备份VPS数据

運維技術·lala.im · 2019-09-14 · 95 人浏览

原文地址:https://lala.im/6346.html,請支持原作者!該處僅作轉載。

範例
Restic是一个用Go开发的跨平台数据备份神器,支持众多后端存储服务,例如Local/SFTP/GoogleCloudStorage等等。并且所有备份数据都经过加密,非常安全。
本文将介绍使用SFTP的方式备份一个WordPress博客的站点文件+数据库。
生产机器:157.245.202.243/备份机器:157.245.194.243
首先在生产机器上安装Restic:

wget https://github.com/restic/restic/releases/download/v0.9.5/restic_0.9.5_linux_amd64.bz2
bzip2 -d restic_0.9.5_linux_amd64.bz2
mv restic_0.9.5_linux_amd64 /usr/bin/restic
chmod +x /usr/bin/restic

生成SSH密匙对(一路回车即可):

ssh-keygen -b 4096

将公钥拷贝到备份机器:

ssh-copy-id [email protected]

创建两个存储库(一个用于备份站点文件,一个用于备份数据库)

restic -r sftp:157.245.194.243:/opt/restic-repo/wordpress init
restic -r sftp:157.245.194.243:/opt/restic-repo/wpsql init

将存储库密码写到文件(例如我的两个存储库密码分别是wordpress/wpsql):

echo "wordpress" > ~/restic-password-wordpress
echo "wpsql" > ~/restic-password-wpsql

注意:一定要妥善保管Restic存储库的密码,忘记这个密码你将无法恢复任何备份。
现在手动备份一次看看是不是正常的,备份网站文件:

restic -r sftp:157.245.194.243:/opt/restic-repo/wordpress -p ~/restic-password-wordpress backup /var/www/wordpress

备份数据库:

mysqldump --databases wordpress -u -p | restic -r sftp:157.245.194.243:/opt/restic-repo/wpsql -p ~/restic-password-wpsql backup --stdin --stdin-filename wordpress.sql

注:
1.restic的-p参数指定对应存储库的密码文件,尤其是在使用mysqldump备份数据库的时候必须指定这个参数,否则无法正常工作。
2.mysqldump的–databases指定你要备份的数据库名。
3.mysqldump的-u指定你的数据库用户名,-p指定你的数据库用户密码,都不要带空格。
查看备份快照:

restic -r sftp:157.245.194.243:/opt/restic-repo/wordpress snapshots
restic -r sftp:157.245.194.243:/opt/restic-repo/wpsql snapshots

从指定快照恢复备份:

restic -r sftp:157.245.194.243:/opt/restic-repo/wordpress -p ~/restic-password-wordpress restore 9b678a80 --target /tmp/wordpress

直接从最后一次快照恢复备份:

restic -r sftp:157.245.194.243:/opt/restic-repo/wordpress -p ~/restic-password-wordpress restore latest --target /tmp/wordpress

恢复数据库(同理):

restic -r sftp:157.245.194.243:/opt/restic-repo/wpsql -p ~/restic-password-wpsql restore latest --target /tmp

然后使用mysql命令行或者phpmyadmin等工具创建一个同名的空数据库,之后使用下面的命令即可导入数据库:

mysql -uroot -p wordpress < /tmp/wordpress.sql

删除快照:

restic -r sftp:157.245.194.243:/opt/restic-repo/wordpress -p ~/restic-password-wordpress forget 9b678a80

自动备份,这里可以借助crontab完成:

crontab -e

例如每24小时备份一次:

0 0 * * * restic -r sftp:157.245.194.243:/opt/restic-repo/wordpress -p /root/restic-password-wordpress backup /var/www/wordpress
0 0 * * * mysqldump --databases wordpress -u -p | restic -r sftp:157.245.194.243:/opt/restic-repo/wpsql -p /root/restic-password-wpsql backup --stdin --stdin-filename wordpress.sql

更多用法可以参考官方的文档:
https://restic.readthedocs.io/en/latest/index.html

運維技術 lala.im
Theme Jasmine by Kent Liao