Aprendizagem pessoal com IA
e orientação prática
讯飞绘镜

Falhas frequentes e recentes no site, que acabaram de ser recuperadas, escrevem um Wordpress usando scripts de backup automático de disco na nuvem gratuitos

Uma falha no servidor que resulta na perda de dados do site é um desastre! Se você tiver apenas um site pequeno e não puder pagar vários servidores de backup e não puder configurar backups de sites, espero que isso ajude aqueles que estão enfrentando o mesmo problema.

pertencer Servidor Linux Ele garante a segurança dos dados do site e a recuperação dos dados, mesmo que o servidor seja danificado.


especificidades ::

  • Backups programados WordPress Especificando diretórios e bancos de dados
  • Atualizar julgamento Determinar se um artigo foi atualizado para executar uma tarefa de backup
  • Carregamento automático Ir para o AliCloud
  • Limpeza automática Backups mais antigos para evitar o uso excessivo de armazenamento

 

Instale o cliente AliCloudDisk

Instalação em primeiro lugar CLI do AliCloud Disk usado para uploads de arquivos.

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

Faça login no AliCloud Drive

aliyunpan login

Abra a URL pop-up em seu navegador e leia o código para fazer login Em seguida, volte ao terminal e aguarde até que a mensagem "Login Successful" seja exibida.

Crie um diretório de backup local

mkdir -p /www/backup

Esse diretório será usado para armazenar backups locais; modifique-o você mesmo.

Criação de scripts de backup automatizados

existir /www/backup/ crie um novo diretório backup_wp.sh Roteiro:

nano /www/backup/backup_wp.sh

Em seguida, cole o seguinte:

#!/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"

Salvar e sair ::

manter a mão sobre Ctrl + X → Entrada Y → Pressione Enter

Concessão de direitos de execução

chmod +x /www/backup/backup_wp.sh

Configuração de tarefas cronometradas (Painel do Pagode)

🔹 Adicionar tarefas agendadas ao pagode

  1. Abrir o painel do pagode
  2. entrar em Tarefas planejadas → Adição de tarefas programadas
  3. Tipo de missão opção Shell 脚本
  4. Nome da tarefa ::WordPress 自动备份
  5. período de implementação ::每 6 小时
  6. executar um comando ::
bash /www/backup/backup_wp.sh
  1. Salvando tarefas

Testar manualmente os backups

Você pode executar um backup imediatamente para ver se funciona:

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

Em seguida, verifique o registro:

tail -f /www/backup/backup.log

Se tudo estiver certo, a tarefa cronometrada será executada automaticamente.

Solução de problemas de anomalias comuns

🔍 1. backup travado em "Compressing WordPress directory" (Compactando o diretório do WordPress)

📌 Solução:

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

Se a carga da CPU for alta, o catálogo poderá ser muito grande, basta ter paciência.

2. a tarefa é interrompida após a desconexão do SSH

Solução: use o nohup

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

Dessa forma, a desconexão do SSH não afeta a tarefa.

3. como retomar a visualização dos registros

tail -f /www/backup/backup.log

Você pode visualizar o progresso do backup em tempo real.

Como evitar conflitos quando as tarefas levam muito tempo para serem executadas

📌 Solução:mecanismo de travamento
existir backup_wp.sh Adicione no início:

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

Dessa forma, uma nova tarefa não será iniciada se a última tarefa não tiver sido concluída.

Agora seu site WordPress está totalmente automatizado com backups!

🚀 Mesmo se o servidor falhar, você sempre poderá recuperar seus dados!

Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " Falhas frequentes e recentes no site, que acabaram de ser recuperadas, escrevem um Wordpress usando scripts de backup automático de disco na nuvem gratuitos
pt_BRPortuguês do Brasil