使用 bup (bup remote) 的 Wordpress 备份脚本

此脚本将 Wordpress 安装(包括数据库、文件和目录,不包括缓存)备份到运行在 10.1.2.3 上的 bup 远程服务器。你需要确保对该服务器的无密码访问。

它基于数据库主机、用户名和密码的自动提取,有关更多详细信息,请查看如何在 wp-config.php 中 grep WordPress DB_NAME、DB_USER、DB_PASSWORD 和 DB_HOST

wordpress-backup-script-using-bup-bup-remote.sh
#!/bin/bash
export NAME=$(basename $(pwd))
export BUP_DIR=/var/bup/$NAME.bup
export REMOTE_BUP_DIR=/bup-backups/$NAME.bup
export REMOTE_SERVER=10.1.2.3
export BUP_REMOTE=$REMOTE_SERVER:$REMOTE_BUP_DIR

# 初始化
bup -d $BUP_DIR init -r $BUP_REMOTE
# 保存 MariaDB 转储(从 wp-config.php 提取 MariaDB 配置)
DB_NAME=$(grep -oP "define\(['\"]DB_NAME['\"],\s*['\"]\K[^'\"]+(?=[\'\"]\s*\)\s*;)" wp-config.php)
DB_USER=$(grep -oP "define\(['\"]DB_USER['\"],\s*['\"]\K[^'\"]+(?=[\'\"]\s*\)\s*;)" wp-config.php)
DB_PASSWORD=$(grep -oP "define\(['\"]DB_PASSWORD['\"],\s*['\"]\K[^'\"]+(?=[\'\"]\s*\)\s*;)" wp-config.php)
DB_HOST=$(grep -oP "define\(['\"]DB_HOST['\"],\s*['\"]\K[^'\"]+(?=[\'\"]\s*\)\s*;)" wp-config.php)
mysqldump -h$DB_HOST -u$DB_USER -p$DB_PASSWORD $DB_NAME | bup -d $BUP_DIR split -n $NAME-$DB_NAME.sql

# 保存 wordpress 目录
bup -d $BUP_DIR index --exclude wp-content/cache --exclude wp-content/uploads/cache . && bup save -r $BUP_REMOTE -9 --strip-path $(pwd) -n $NAME .

# 可选:添加 par2 信息
#   这仅推荐用于不可靠存储上的备份或极其关键的备份
#   如果你已有 bitrot 保护(如 BTRFS 定期清理),这可能有点过度。
# 取消注释此行以启用:
# bup on $REMOTE_SERVER -d $REMOTE_BUP_DIR fsck -g

# 可选:清理旧备份
bup on $REMOTE_SERVER -d $REMOTE_BUP_DIR prune-older --keep-all-for 1m --keep-dailies-for 6m --keep-monthlies-for forever -9 --unsafe

Check out similar posts by category: Bup, Wordpress