如何备份WordPress服务器?

WordPress

1 前言

笔者有运行一个WordPress网站https://www.cmdshcool.org,为了安全,笔者决定将服务器文件备份到一台本地的文件服务器,于是创建此文。

2 最佳实践

2.1 系统配置

2.1.1 系统信息

wwwServer:
OS = CentOS 7.4 x86_64
HostName = www.cmdschool.org

backupServer:
OS = CentOS 6.5 x86_64
HostName = backupServer.cmdschool.org

2.1.2 安装备份工具

In wwwServer and backupServer:

yum install -y rsync

2.2 部署备份

2.2.1 配置备份目录

In wwwServer:

mkdir /backup/

In backupServer:

mkdir /home/backup/

2.2.2 配置公钥认证

In backupServer:
由于部署公钥认证不是本章的重点,请自行参阅以下文档配置,
https://www.cmdschool.org/archives/1001

2.2.3 部署备份脚本

In backupServer:

mkdir -p ~/scripts/
vim ~/scripts/backupWeb.sh

加入如下内容:

#!/bin/bash

hostName="www.cmdschool.org"
sqlUser="root"
sqlPWD="password"
sockPath="/var/lib/mysql/mysql.sock"
dataBase="wordpress"
dumpPath="/backup/www.cmdschool.org.dump"
wwwDIR="/var/www/www.cmdschool.org"
nginxDIR="/etc/nginx"
backupDIR="/home/backup"
tarFile="www.cmdschool.org-`date "+%Y%m%d"`.tar.bz2"
fileType="tar.bz2"
log=/var/log/webBackup.log

if [ ! -d $backupDIR ]; then
        exit 1
fi

ping -c 1 "$hostName" > /dev/null
if [ $? != 0 ]; then
        echo `date +"%Y-%m-%d %H:%M:%S"`" ping: unknown host $hostName" >> "$log"
        exit 1
fi

cd $backupDIR
ssh $hostName "mysqldump -S $sockPath -u$sqlUser -p$sqlPWD $dataBase > $dumpPath"
rsync -av --delete $hostName:$wwwDIR/ $backupDIR/www.cmdschool.org/
rsync -av $hostName:$dumpPath $backupDIR/www.cmdschool.org.dump
rsync -av --delete $hostName:$nginxDIR/ $backupDIR/nginx/

tar -cvjf $tarFile www.cmdschool.org/ www.cmdschool.org.dump nginx/

# find $backupDIR -type f -name \*.$fileType -ctime +30 -exec ls -l {} \;
find $backupDIR -type f -name \*.$fileType -ctime +30 -exec rm -rf {} \;

脚本执行逻辑,
– 脚本运行前先检查备份目录是否存在,如果不存在则直接退出
– 脚本运行前先检查备份的源主机是否能连接,如果不能连接则直接退出
– 脚本进入备份目录
– 脚本通过SSH协议和公钥认证远程登录wwwServer执行MySQL备份
– 脚本同步www目录数据到当前backupServer备份目录
– 脚本同步MySQL备份数据到当前backupServer备份目录
– 脚本同步nginx配置目录数据到当前backupServer备份目录
– 脚本把同步回备份目录的数据按照当前年月日打包存放
– 脚本清理超过30天的打包文件

2.2.4 配置计划任务

In backupServer:

crontab -e

加入如下内容:

0 1 * * * sh ~/scripts/backupWeb.sh
没有评论

发表回复

WordPress
如何安装WordPress的百度统计?

1 前言 一个问题,一篇文章,一出故事。 笔者的WordPress想要安装Baidu统计,于是整理此 …

Reverse Proxy
如何用Nginx反向代理WordPress?

1 前言 一个问题,一篇文章,一出故事。 笔者的WordPress安装Google的Site Kit …

WordPress
如何基于PHP 7.4部署WordPress?

1基础环境配置 1.1最新版本的PHP编译安装 http://www.cmdschool.org/a …