正文索引 [隐藏]

前言

一开始我是打算用插件来备份的,但是感觉好麻烦也不好用,所以就想自己写个shell脚本自动备份。数据库用mysqldump来导出,网站文件直接用tar打包压缩,为了以防万一把我数据库的文件夹也打包压缩了

我之前完全没有写过shell脚本,下面这个脚本是我一边百度一边写的,非常简陋

shell备份脚本

#!/bin/bash

DATE=$(date +%y-%m-%d)

#以当天日期创建文件夹
mkdir /home/backup/$DATE
cd /home/

#导出数据库
mysqldump -h xxx.xxx.xxx.xxx -P 3306 -uuser -ppasswd --databases wordpress > /home/backup/$DATE/$DATE-wordpress.sql

#直接打包压缩整个数据库文件夹
tar -zcf /home/backup/$DATE/$DATE-mysql.tar.gz ./mysql/

#打包压缩网站文件
tar -zcf /home/backup/$DATE/$DATE-wordpress.tar.gz ./wordpress/

我选择了相对路径是因为tar使用绝对路径后打包后的文件也是带有路径的属性,个人感觉不爽

计划任务

备份间隔的话一个星期一次就够了,利用crontab来自动执行

#编辑/etc/crontab
vi /etc/crontab
#添加
0 6 * * 0 root /home/backup/backup
#这样每个星期日凌晨6点就会自动执行脚本

旧的备份偶尔上去手动删除就好了

虽然文件备份到了服务器上面,但是万一硬盘挂了呢,所以我利用syncthing把服务器上面的备份自动同步到我的电脑上

syncthing备份同步

去官网下载压缩包:syncthing

#解压
tar -zxvf syncthing-linux-amd64-v1.1.3.tar.gz
#进入解压目录
cd syncthing-linux-amd64-v1.1.3

#复制syncthing文件到/usr/bin
cp syncthing /usr/bin
#先启动一次初始化配置文件
syncthing
#然后编辑配置文件,把127.0.0.1:8384改成0.0.0.0:8384
vi ~/.config/syncthing/config.xml

#systemd
cp syncthing-linux-amd64-v1.1.3/etc/linux-systemd/system/[email protected] /etc/systemd/system
#启动syncthing
systemctl start [email protected]
#开机自启syncthing
systemctl enable [email protected]

就这样吧,云端备份什么的用不着,我就不信脸这么黑两个同时坏

参考文章