최근 빈번한 사이트 충돌, 방금 복구, 무료 클라우드 디스크 자동 백업 스크립트를 사용하여 Wordpress 작성
서버가 다운되어 웹사이트 데이터가 손실되는 것은 재앙과 다름없습니다! 소규모 웹사이트로 여러 대의 백업 서버를 운영할 여력이 없고 웹사이트 백업을 구성할 수 없다면 이 글이 같은 문제에 직면한 분들에게 도움이 되길 바랍니다.
관련 Linux 서버 서버가 손상되더라도 웹사이트 데이터의 보안과 데이터 복구를 보장합니다.
특수성 ::
- 예약 백업 워드프레스 디렉토리 및 데이터베이스 지정하기
- 판단 업데이트 백업 작업을 수행하기 위해 문서가 업데이트되었는지 확인합니다.
- 자동 업로드 알리클라우드 디스크로 이동
- 자동 청소 너무 많은 저장 공간을 차지하지 않도록 이전 백업하기
1. 알리클라우드디스크 클라이언트를 설치합니다.
💡 먼저 설치 알리클라우드 디스크 CLI 파일 업로드에 사용됩니다.
🔹 우분투 / 데비안
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. 알리클라우드 드라이브에 로그인합니다.
aliyunpan login
🔹 브라우저에서 팝업 URL을 열고 코드를 스캔하여 로그인합니다. 그런 다음 터미널로 돌아가서 '로그인 성공'이 표시될 때까지 기다립니다.
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
- 작업 저장
수동으로 백업 테스트하기
즉시 백업을 수행하여 작동하는지 확인할 수 있습니다:
/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/
CPU 부하가 높으면 카탈로그가 너무 클 수 있으니 조금만 기다려주세요.
🔍 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
이렇게 하면 마지막 작업이 완료되지 않은 경우 새 작업이 시작되지 않습니다.
이제 워드프레스 사이트가 백업을 통해 완전히 자동화되었습니다!
🚀 서버가 다운되더라도 언제든지 데이터를 복구할 수 있습니다!
© 저작권 정책
文章版权归 AI 공유 서클 所有,未经允许请勿转载。
관련 문서
댓글 없음...