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
login de aliyunpan
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 Diretório de backup do # BACKUP_DIR="/www/backup" WP_DIR="/home/www/wp-content" //Substitua pelo endereço do diretório para o qual você deseja fazer o backup DB_NAME="Nome do banco de dados" DB_USER="Número da conta do banco de dados" DB_PASS="Senha do banco de dados" DB_HOST="localhost" Arquivo de armazenamento do número de artigo do # NO_FILE="$BACKUP_DIR/no.md" Nomeação do arquivo de backup do # DATE=$(data + "%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" # Defina a função de registro (tanto a saída para o terminal quanto a gravação no registro) log() { echo -e "$1" | tee -a "$LOG_FILE" } log "---------------------------" log "[`date`] 🚀 Iniciando o backup do diretório do WordPress..." # Verifique se o diretório do WordPress existe e não está vazio if [ ! -d "$WP_DIR" ] || [ -z "$(ls -A "$WP_DIR")" ]; then log "[`date`] 🚨 O diretório do WordPress está vazio, o backup falhou!" exit 1 exit 1 # Obter o número de publicações no banco de dados 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`] 📊 Número total de postagens no banco de dados: $ARTICLE_COUNT" # Certifique-se de que o arquivo no.md exista; caso contrário, crie-o e inicialize-o if [ ! -f "$NO_FILE" ]; then echo "0" > "$NO_FILE" log "[`data`] 🆕 o arquivo no.md não existe, criado: $NO_FILE" fi # Leitura do número de artigos em no.md PREVIOUS_COUNT=$(cat "$NO_FILE") log "[`date`] 📋 lendo o número de artigos no arquivo no.md ($NO_FILE): $PREVIOUS_COUNT" # Se o número de artigos não tiver mudado, pule o backup if [ "$ARTICLE_COUNT" -eq "$PREVIOUS_COUNT" ]; then log "[`data`] 🛑 O número de artigos não foi alterado, pule o processo de backup." exit 0 fi # atualize o arquivo no.md echo "$ARTICLE_COUNT" > "$NO_FILE" log "[`date`] ✍️ atualizando o arquivo no.md com o número mais recente de artigos: $ARTICLE_COUNT" # Continuação do processo de backup log "[`date`] 📦 Iniciando o backup do diretório do WordPress..." tar -czf "$WP_BACKUP" "$WP_DIR" >> "$LOG_FILE" 2>&1 log "[`date`] ✅ Backup completo do diretório do WordPress: $WP_BACKUP" log "[`date`] 📦 Iniciando o backup do banco de dados..." if ! mysql -u "$DB_USER" -p "$DB_PASS" -h "$DB_HOST" -e "USE $DB_NAME" > /dev/null 2>&1; then log "[`date`] 🚨 Falha na conexão com o banco de dados, verifique a configuração do banco de dados!" exit 1 log "[`data`] 🚨 Falha na conexão com o banco de dados. mysqldump -u "$DB_USER" -p "$DB_PASS" -h "$DB_HOST" "$DB_NAME" > "$DB_BACKUP" log "[`date`] ✅ Exportação do banco de dados concluída: $DB_BACKUP" log "[`date`] 📦 Comprimindo o arquivo de banco de dados..." gzip "$DB_BACKUP" log "[`date`] ✅ Compressão do banco de dados concluída: $DB_BACKUP_GZ" log "[`date`] ☁️ Começando a fazer upload para aliyunpan..." aliyunpan upload "$WP_BACKUP" /backup/ | tee -a "$LOG_FILE" aliyunpan upload "$DB_BACKUP_GZ" /backup/ | tee -a "$LOG_FILE" log "[`date`] ✅ Upload concluído!" log "[`date`] 🧹 Excluindo um backup local de 7 dias atrás..." find "$BACKUP_DIR" -type f -mtime +7 -print -exec rm -f {} \; | tee -a "$LOG_FILE" log "[`date`] ✅ Tarefa de backup concluída!" # Excluir o arquivo de registro rm -f "$LOG_FILE"
Salvar e sair ::
manter a mão sobre Ctrl + X
→ Entrada Y
→ Pressione Entrar
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
- Abrir o painel do pagode
- entrar em Tarefas planejadas → Adição de tarefas programadas
- Tipo de missão opção
Script de shell
- Nome da tarefa ::
Backup automático do WordPress
- período de implementação ::
A cada 6 horas
- executar um comando ::
bash /www/backup/backup_wp.sh
- 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 # Exibir carga da 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 "Já existe uma tarefa de backup em execução, ignore esta execução." >> /www/backup/backup.log
exit 1
exit 1
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!