halo定时备份的方法
在网上查询了一下halo定时备份有三种方案:邮箱和Dropbox,以及github。
备份到QQ邮箱
安装邮件发送依赖组件
Centos 7
1  | yum install sendmail mailx -y  | 
Centos 8
1  | yum -y install postfix sendmail-cf mailx  | 
Debian
- 安装 mailtuils:
1
sudo apt install mailutils -y
 - 安装postfix后缀:在安装过程即将结束时,您将看到一个类似于下图中的窗口的窗口。默认选项是
1
sudo apt install postfix
Internet Site。这是本教程的推荐选项,请按TAB,然后按ENTER。
之后,您将获得另一个窗口,就像下一个图像中的窗口一样。该系统邮件名称应该是一样的,你分配给服务器,当你在创造它的名字。如果它显示子域subdomain.example.com,请将其更改为ust example.com。完成后,按TAB,然后ENTER。 
修改附件发送大小限制
看下现在邮件的大小限制:
1  | sudo postconf message_size_limit  | 
差不多是10M,放大20倍,应该差不多了。
1  | sudo postconf -e "message_size_limit = 204800000"  | 
获得&编辑备份脚本
1  | wget https://raw.githubusercontent.com/iwyang/scripts/master/halo_email_backup.sh  | 
创建备份文件夹
1  | mkdir -p /home/back  | 
修改脚本
脚本原来模样:
1  | #!/bin/bash  | 
根据实际需求,改成下面模样:
1  | vi email.sh  | 
1  | #!/bin/bash  | 
上面代码中最后的rm -f web_$(date +"%Y%m%d").tar.gz,表示删除本地的临时文件。
注意在Debian下要讲
-a改成-A(如下)
1  | - echo "Blog date"|mail -s "Backup$(date +%Y-%m-%d)" -a web_$(date +"%Y%m%d").tar.gz 455343442@qq.com  | 
设置定时任务
赋予文件执行权限
1  | chmod +x /root/email.sh  | 
运行的时候就输入下面的代码即可:./email.sh
设定自动任务
1  | crontab -e  | 
1  | 01 00 * * * /root/email.sh  | 
意思是每天凌晨0:01运行这个脚本。
备份到Dropbox
创建Dropbox应用
首先,需要创建一个Dropbox应用,可以从该网址进行创建:https://www.dropbox.com/developers/apps/create
在这里,应用类型选择Dropbox API,数据存储类型选择App folder,然后命名创建。然后切换到Permissions选项卡,勾选相应权限。最后记录下App key,App secret,下面要用。

下载dropbox_uploader.sh
dropbox_uploader 是一个第三方Dropbox备份脚本,首先下载脚本:
1  | curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh  | 
然后,为该脚本添加执行权限:
1  | chmod +x dropbox_uploader.sh  | 
执行该脚本,绑定APP:
1  | ./dropbox_uploader.sh  | 
在终端里输入App key,App secret,接着会返回一个网址,浏览器打开,复制得到的token,最后在终端里完成绑定。
之后可以执行下面的命令测试上传,提示Done就是绑定成功了:
1  | ./dropbox_uploader.sh upload /etc/passwd /backup/passwd.old  | 
如果报错unlink,先执行命令rm ~/.dropbox_uploader,删除相应文件夹,然后删除上面申请的APP。按上面的操作重新申请
APP、重新绑定,一般第二次申请就会成功。
编写备份脚本
编写定时备份脚本,取名为backup.sh。代码原来模样如下:
1  | vi backup.sh  | 
1  | #!/bin/bash  | 
根据实际情况改成下面模样:
1  | #!/bin/bash  | 
先用$SCRIPT_DIR/dropbox_uploader.sh delete "$DROPBOX_DIR"删除Dropbox备份文件夹,再上传文件。这样就保证Dropbox永远只有一个最新的备份文件,不用手动删除多余的备份文件了。
当然也可以通过脚本设置保留旧数据的时长。如下面一个脚本就是让旧数据在Dropbox保留7天,本地保留10天。(不过觉得没有必要,还是上面的方法简单,下面方法尝试过,老是出现问题,旧数据删除不了,不想折腾了)
1  | #!/bin/bash  | 
赋予文件执行权限
1  | chmod +x backup.sh  | 
运行的时候就输入下面的代码即可:./backup.sh
设置定时任务
1  | crontab -e  | 
1  | 02 00 * * * /root/backup.sh  | 
这样,就可以每天凌晨00:02自动备份到Dropbox了。
备份到github
准备工作
首先当然是在服务器上安装GIt,配置ssh公钥,并且在github上添加服务器ssh公钥。具体过程略。
初始化仓库
1  | cd /root/.halo  | 
注意要删除主题文件夹下的.git文件夹,不然的话就无法备份主题了。当然也可以不备份主题,因为主题所有配置选项都在数据库里。如果这样的话,命令要作如下调整:
1  | git add application.yaml upload/ db/  | 
设置定时任务
编写备份脚本
1  | cd /root  | 
脚本原来模样:
1  | #!/bin/bash  | 
根据实际情况修改如下:
1  | #!/bin/bash  | 
为了防止服务器里.git文件夹过大,脚本可以作如下调整:
1  | #!/bin/bash  | 
赋予文件执行权限
1  | chmod +x /root/github.sh  | 
设定自动任务
1  | crontab -e  | 
1  | 03 00 * * * /root/github.sh  | 
意思是每天凌晨0:03运行这个脚本。
还原博客
1  | git clone git@github.com:iwyang/halo.git .halo  | 
接下来就是配置个 Java 环境,下载个 Halo 运行包,配置域名访问。具体可参考官方文档。
总结
halo博客迁移后,最好删除logs文件夹下的日志文件。
SCP命令
下载文件
从服务器下载文件到本地,在Git Bash执行:
1  | scp root@104.224.191.88:/root/.ssh/mysite ssh  | 
意思是将服务器/root/.ssh目录下的mysite文件复制到当前路径下ssh文件夹下。
上传文件
从本地上传文件到服务器,在Git Bash执行:
1  | scp .halo.zip root@137.220.43.191:/root/  | 
意思是将当前目录下.halo.ip文件上传到服务器/root/目录下。
wordpress相关
wordpress常用mysql命令
1  | # 1.删除数据库  | 
Debian 10 五分钟/一键安装Wordpress
1  | #Debian8下载脚本  | 
命令列表
1  | bash tylemp.sh system # 优化系统,删除不需要组件,dropbear替代sshd  | 
修改 WordPress 上传文件大小限制
1.查找php.ini配置文件
1  | find / -name "php.ini"  | 
会出现两个结果,修改类似/etc/php/7.3/fpm/php.ini
2.修改 php.ini
1  | vi /etc/php/7.3/fpm/php.ini  | 
在其中搜索并修改以下配置:
1  | upload_max_filesize = 512M  | 
这里配置上限为 512 MB,同时增加了最大处理时间。
3.修改 nginx.conf
1  | vi /etc/nginx/conf.d/blog.bore.vip.conf  | 
在 http 或 server 配置下添加
1  | client_max_body_size 512M;  | 
这里配置上限为 512 MB。
4.重启nginx和php
1  | service nginx restart  | 
nginx: command not found 解决方案
只需要输入source /etc/profile ,让配置文件重新生效一下即可。
参考链接
- 1.Linux 每日自动备份到FTP及数据库通过邮箱发送方法
 - 2.fetchmail: SMTP error: 552 5.3.4 Message size exceeds fixed limit
 - 3.如何将服务器上的网站数据定时自动备份到Dropbox
 - 4.Linux 定时备份服务器/网站数据到Github私人仓库
 - 5.MySQL 教程
 - 6.Changing the WordPress site URL using the MySQL command line
 - 7.CentOs8系统安装mailx发邮件
 - 8.Impossible to unlink
 - 9.如何在Debian 9上安装和配置Postfix作为仅发送SMTP服务
 - 10.Debian LNMP/LEMP/WordPress一键脚本
 - 11.修改 WordPress 上传文件大小限制