В последнее время часто падает сайт, только что восстановил, написал вордпресс с помощью бесплатных скриптов автоматического резервного копирования облачных дисков
Падение сервера, приводящее к потере данных сайта, - это не что иное, как катастрофа! Если у вас небольшой сайт и вы не можете позволить себе несколько серверов резервного копирования и не умеете настраивать резервное копирование сайта, я надеюсь, это поможет тем, кто столкнулся с той же проблемой.
касаться Сервер Linux Он гарантирует сохранность данных веб-сайта и возможность восстановления информации даже в случае повреждения сервера.
особенности ::
- Резервное копирование по расписанию WordPress Указание каталогов и баз данных
- Суждение об обновлении Определите, была ли статья обновлена для выполнения задачи резервного копирования
- Автоматическая загрузка Перейдите на диск AliCloud
- Авточистка Старые резервные копии, чтобы не занимать много места в памяти.
📌 1. Установите клиент AliCloudDisk
💡 Сначала установка AliCloud Disk CLI используется для загрузки файлов.
🔹 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. Войдите в AliCloud Drive
aliyunpan login
🔹 Откройте всплывающий URL-адрес в браузере и отсканируйте код для входа в систему Затем вернитесь к терминалу и дождитесь появления надписи "Login Successful".
📌 3. Создайте локальный каталог резервных копий
mkdir -p /www/backup
Этот каталог будет использоваться для хранения локальных резервных копий, измените его самостоятельно.
📌 4. Создание сценариев автоматического резервного копирования
существовать /www/backup/ создайте новый каталог backup_wp.sh Сценарий:
nano /www/backup/backup_wp.sh
Затем вставьте следующее:
#!/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"
Сохранить и выйти ::
нажмите Ctrl + X → Вход Y → Нажмите Enter
📌 5. Предоставление прав на исполнение
chmod +x /www/backup/backup_wp.sh
📌 6. Установка заданий по времени (панель Пагода)
🔹 Добавление запланированных задач в пагоду
- Открыть панель пагоды
- входить Запланированные задачи → Добавление запланированных задач
- Тип миссии опция
Shell 脚本 - Название задачи ::
WordPress 自动备份 - период реализации ::
每 6 小时 - выполнить команду ::
bash /www/backup/backup_wp.sh
- Сохранение заданий
📌 7. тестирование резервных копий вручную
Вы можете сразу же выполнить резервное копирование, чтобы проверить, работает ли оно:
/bin/bash /www/backup/backup_wp.sh
Затем проверьте журнал:
tail -f /www/backup/backup.log
Если все в порядке, задание с таймером будет выполнено автоматически.
🚨 Устранение распространенных аномалий
🔍 1. Резервное копирование застряло на этапе "Сжатие каталога WordPress".
📌 Решение:
ps aux | grep backup_wp.sh
top -c # 查看 CPU 负载
ls -lh /www/backup/
Если загрузка процессора высока, каталог может быть слишком большим, просто наберитесь терпения.
🔍 2. Задача останавливается после отключения SSH
📌 Решение: используйте nohup
nohup /bin/bash /www/backup/backup_wp.sh > /www/backup/backup.log 2>&1 &
Таким образом, отключение SSH не повлияет на выполнение задания.
🔍 3. Как возобновить просмотр журналов
tail -f /www/backup/backup.log
Вы можете просматривать ход резервного копирования в режиме реального времени.
🔍 4. Как избежать конфликтов, когда выполнение задач занимает слишком много времени
📌 Решение:запорный механизм
существовать backup_wp.sh Добавьте в начале:
if pgrep -f "backup_wp.sh" > /dev/null; then
echo "已有备份任务在运行,跳过此次执行。" >> /www/backup/backup.log
exit 1
fi
Таким образом, новая задача не будет запущена, если последняя не была завершена.
🎉 Теперь ваш WordPress сайт полностью автоматизирован с резервным копированием!
🚀 Даже если сервер упадет, вы всегда сможете восстановить свои данные!
© заявление об авторских правах
Авторское право на статью Круг обмена ИИ Пожалуйста, не воспроизводите без разрешения.
Похожие статьи
Нет комментариев...




