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 root@157.245.194.243
创建两个存储库(一个用于备份站点文件,一个用于备份数据库)
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
真jb悲催 yandex卡验证不了upcloud
全球付试试。。