Recientes frecuentes caídas del sitio, acaba de recuperar, escribir un Wordpress utilizando disco nube libre de secuencias de comandos de copia de seguridad automática

堆友AI

La caída de un servidor con la consiguiente pérdida de datos de un sitio web es un desastre. Si usted es sólo un pequeño sitio web y no puede permitirse múltiples servidores de copia de seguridad y no puede configurar copias de seguridad de sitios web, espero que esto ayude a aquellos que se enfrentan al mismo problema.

pertain Servidor Linux Garantiza la seguridad de los datos del sitio web y la recuperación de los datos aunque el servidor sufra daños.

especificidades ::

  • Copias de seguridad programadas WordPress especificando directorios y bases de datos
  • Sentencia de actualización Determinar si un artículo se ha actualizado para realizar una tarea de copia de seguridad
  • Carga automática Ir a AliCloud Disc
  • Auto Clean Copias de seguridad antiguas para no ocupar demasiado espacio de almacenamiento

 

📌 1. Instalar el cliente AliCloudDisk.

💡 Primero la instalación AliCloud Disk CLI utilizado para cargar archivos.

🔹 Ubuntu / Debian

sudo curl -fsSL http://file.tickstep.com/apt/pgp | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/tickstep-packages-archive-keyring.gpg > /dev/null && echo "deb [signed-by=/etc/apt/trusted.gpg.d/tickstep-packages-archive-keyring.gpg arch=amd64,arm64] http://file.tickstep.com/apt aliyunpan main" | sudo tee /etc/apt/sources.list.d/tickstep-aliyunpan.list > /dev/null && sudo apt-get update && sudo apt-get install -y aliyunpan

🔹 CentOS / RHEL

sudo curl -fsSL http://file.tickstep.com/rpm/aliyunpan/aliyunpan.repo | sudo tee /etc/yum.repos.d/tickstep-aliyunpan.repo > /dev/null && sudo yum install aliyunpan -y

📌 2. Inicia sesión en AliCloud Drive.

aliyunpan login

🔹 Abre la URL emergente en tu navegador y escanea el código para iniciar sesión A continuación, vuelva al terminal y espere a que aparezca el mensaje "Inicio de sesión correcto".

📌 3. Crear un directorio de copia de seguridad local

mkdir -p /www/backup

Este directorio se utilizará para almacenar las copias de seguridad locales, modifíquelo usted mismo.

📌 4. Creación de scripts automatizados de copia de seguridad

existe /www/backup/ cree un nuevo directorio backup_wp.sh Guión:

nano /www/backup/backup_wp.sh

A continuación, pega lo siguiente:

#!/bin/bash
# 备份目录
BACKUP_DIR="/www/backup"
WP_DIR="/home/www/wp-content" //替换为你要备份的目录地址
DB_NAME="数据库名"
DB_USER="数据库账号"
DB_PASS="数据库密码"
DB_HOST="localhost"
# 文章数量存储文件
NO_FILE="$BACKUP_DIR/no.md"
# 备份文件命名
DATE=$(date +"%Y%m%d-%H%M%S")
WP_BACKUP="$BACKUP_DIR/wp-content-$DATE.tar.gz"
DB_BACKUP="$BACKUP_DIR/db-$DATE.sql"
DB_BACKUP_GZ="$DB_BACKUP.gz"
LOG_FILE="$BACKUP_DIR/backup.log"
# 定义日志函数(既输出到终端,又写入日志)
log() {
echo -e "$1" | tee -a "$LOG_FILE"
}
log "---------------------------"
log "[`date`] 🚀 开始备份 WordPress 目录..."
# 检查 WordPress 目录是否存在且非空
if [ ! -d "$WP_DIR" ] || [ -z "$(ls -A "$WP_DIR")" ]; then
log "[`date`] 🚨 WordPress 目录为空,备份失败!"
exit 1
fi
# 获取数据库文章数量
ARTICLE_COUNT=$(mysql -u "$DB_USER" -p"$DB_PASS" -h "$DB_HOST" -D "$DB_NAME" -se "SELECT COUNT(*) FROM wp_posts WHERE post_type='post' AND post_status='publish';")
log "[`date`] 📊 数据库中文章总数: $ARTICLE_COUNT"
# 确保 no.md 文件存在,如果不存在,则创建并初始化
if [ ! -f "$NO_FILE" ]; then
echo "0" > "$NO_FILE"
log "[`date`] 🆕 no.md 文件不存在,已创建: $NO_FILE"
fi
# 读取 no.md 中的文章数量
PREVIOUS_COUNT=$(cat "$NO_FILE")
log "[`date`] 📋 读取 no.md 文件 ($NO_FILE) 中的文章数量: $PREVIOUS_COUNT"
# 如果文章数量未变化,则跳过备份
if [ "$ARTICLE_COUNT" -eq "$PREVIOUS_COUNT" ]; then
log "[`date`] 🛑 文章数量未变化,跳过备份流程。"
exit 0
fi
# 更新 no.md 文件
echo "$ARTICLE_COUNT" > "$NO_FILE"
log "[`date`] ✍️ 更新 no.md 文件,记录最新的文章数量: $ARTICLE_COUNT"
# 继续执行备份流程
log "[`date`] 📦 开始备份 WordPress 目录..."
tar -czf "$WP_BACKUP" "$WP_DIR" >> "$LOG_FILE" 2>&1
log "[`date`] ✅ WordPress 目录备份完成: $WP_BACKUP"
log "[`date`] 📦 开始备份数据库..."
if ! mysql -u "$DB_USER" -p"$DB_PASS" -h "$DB_HOST" -e "USE $DB_NAME" > /dev/null 2>&1; then
log "[`date`] 🚨 数据库连接失败,请检查数据库配置!"
exit 1
fi
mysqldump -u "$DB_USER" -p"$DB_PASS" -h "$DB_HOST" "$DB_NAME" > "$DB_BACKUP"
log "[`date`] ✅ 数据库导出完成: $DB_BACKUP"
log "[`date`] 📦 压缩数据库文件..."
gzip "$DB_BACKUP"
log "[`date`] ✅ 数据库压缩完成: $DB_BACKUP_GZ"
log "[`date`] ☁️  开始上传到阿里云盘..."
aliyunpan upload "$WP_BACKUP" /backup/ | tee -a "$LOG_FILE"
aliyunpan upload "$DB_BACKUP_GZ" /backup/ | tee -a "$LOG_FILE"
log "[`date`] ✅ 上传完成!"
log "[`date`] 🧹 删除 7 天前的本地备份..."
find "$BACKUP_DIR" -type f -mtime +7 -print -exec rm -f {} \; | tee -a "$LOG_FILE"
log "[`date`] ✅ 备份任务完成!"
# 删除日志文件
rm -f "$LOG_FILE"

Guardar y salir ::

pulse Ctrl + X → Entrada Y → Pulse Enter

📌 5. Concesión de derechos de ejecución

chmod +x /www/backup/backup_wp.sh

📌 6. Configuración de tareas cronometradas (Panel Pagoda)

🔹 Añadir tareas programadas a la pagoda.

  1. Abrir el panel Pagoda
  2. entrar en Tareas previstas → Añadir tareas programadas
  3. Tipo de misión opción Shell 脚本
  4. Nombre de la tarea ::WordPress 自动备份
  5. período de aplicación ::每 6 小时
  6. ejecutar un comando ::
bash /www/backup/backup_wp.sh
  1. Guardar tareas

📌 7. probar manualmente las copias de seguridad

Puedes realizar una copia de seguridad inmediatamente para ver si funciona:

/bin/bash /www/backup/backup_wp.sh

Luego comprueba el registro:

tail -f /www/backup/backup.log

Si todo va bien, la tarea cronometrada se ejecutará automáticamente.

🚨 Solución de anomalías comunes

🔍 1. Backup atascado en "Comprimiendo directorio de WordPress"

📌 Solución:

ps aux | grep backup_wp.sh
top -c  # 查看 CPU 负载
ls -lh /www/backup/

Si la carga de la CPU es alta, puede que el catálogo sea demasiado grande, ten paciencia.

🔍 2. La tarea se detiene tras la desconexión SSH

📌 Solución: utilizar el nohup

nohup /bin/bash /www/backup/backup_wp.sh > /www/backup/backup.log 2>&1 &

De esta forma la desconexión SSH no afecta a la tarea.

🔍 3. Cómo reanudar la visualización de los registros

tail -f /www/backup/backup.log

Puedes ver el progreso de la copia de seguridad en tiempo real.

🔍 4. Cómo evitar conflictos cuando las tareas tardan demasiado en realizarse

📌 Solución:mecanismo de bloqueo
existe backup_wp.sh Añade al principio:

if pgrep -f "backup_wp.sh" > /dev/null; then
echo "已有备份任务在运行,跳过此次执行。" >> /www/backup/backup.log
exit 1
fi

De este modo, no se iniciará una nueva tarea si no se ha completado la última.

🎉 ¡Ahora tu sitio WordPress está totalmente automatizado con copias de seguridad!

🚀 Aunque se caiga el servidor, siempre podrás recuperar tus datos.

© declaración de copyright

Artículos relacionados

Sin comentarios

Debe iniciar sesión para participar en los comentarios.
Acceder ahora
ninguno
Sin comentarios...