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 上传文件大小限制
