溫馨提示×

如何備份和恢復CentOS PHP數據

小樊
38
2025-09-30 21:15:30
欄目: 編程語言

CentOS環境下PHP數據備份與恢復指南

一、備份前的準備工作

  1. 確認數據位置
    • PHP文件通常存放在Web服務器的根目錄(如Apache的/var/www/html、Nginx的/usr/share/nginx/html);
    • PHP配置文件位于/etc/php.ini(全局配置)或/etc/php.d/(擴展配置);
    • 若PHP應用使用數據庫(如MySQL),需備份對應的數據庫(如mydatabase)。
  2. 準備存儲介質
    將備份文件存儲在安全位置(如外部硬盤、網絡存儲/NAS或云存儲),避免單點故障。
  3. 安裝必要工具
    CentOS默認已安裝tar、rsync等基礎工具;若未安裝mysqldump(MySQL備份工具),可通過sudo yum install mysql-server mysql-devel安裝。

二、PHP文件的備份方法

1. 使用tar命令打包備份(全量備份)

# 進入備份目錄
cd /backup
# 打包PHP文件(排除臨時文件,如.cache、.log)
sudo tar -czvf php_files_backup_$(date +%Y%m%d).tar.gz --exclude='*.log' --exclude='*.tmp' /var/www/html/
  • 參數說明-c創建歸檔,-z用gzip壓縮,-v顯示過程,-f指定文件名;--exclude排除不需要備份的文件類型。

2. 使用rsync命令增量備份(僅備份變化部分)

# 創建備份目錄(按日期分類)
mkdir -p /backup/php_$(date +%Y-%m-%d)
# 同步PHP文件(保留權限、時間戳,刪除目標目錄中多余的文件)
sudo rsync -avz --delete /var/www/html/ /backup/php_$(date +%Y-%m-%d)/
  • 優勢:相比tar,rsync更適合頻繁備份(如每日增量),節省存儲空間和帶寬。

三、PHP配置文件的備份

# 備份php.ini(全局配置)
sudo cp /etc/php.ini /backup/php_ini_backup_$(date +%Y%m%d).ini
# 備份PHP擴展配置(若有)
sudo cp -r /etc/php.d/ /backup/php_d_backup_$(date +%Y%m%d)/

四、數據庫的備份與恢復(若PHP應用使用數據庫)

1. 使用mysqldump邏輯備份(推薦)

# 備份單個數據庫(如mydatabase)
mysqldump -u root -p mydatabase > /backup/mydatabase_backup_$(date +%Y%m%d).sql
# 備份所有數據庫
mysqldump -u root -p --all-databases > /backup/all_databases_backup_$(date +%Y%m%d).sql
  • 說明-u指定用戶名,-p提示輸入密碼;備份文件為SQL格式,可直接導入。

2. 物理備份(大型數據庫適用)

# 停止MySQL服務(確保數據一致性)
sudo systemctl stop mysqld
# 復制數據目錄(默認/var/lib/mysql)
sudo cp -r /var/lib/mysql /backup/mysql_physical_backup_$(date +%Y%m%d)
# 啟動MySQL服務
sudo systemctl start mysqld

五、恢復操作步驟

1. 恢復PHP文件

# 解壓tar備份文件
sudo tar -xzvf /backup/php_files_backup_20250930.tar.gz -C /
# 或使用rsync同步增量備份
sudo rsync -avz /backup/php_2025-09-30/ /var/www/html/

2. 恢復PHP配置文件

# 覆蓋php.ini
sudo cp /backup/php_ini_backup_20250930.ini /etc/php.ini
# 覆蓋擴展配置
sudo cp -r /backup/php_d_backup_20250930/ /etc/php.d/
# 重啟Web服務使配置生效
sudo systemctl restart apache2  # Apache
# 或
sudo systemctl restart nginx    # Nginx

3. 恢復數據庫(邏輯備份)

# 登錄MySQL(確認數據庫是否存在,若不存在需先創建)
mysql -u root -p
# 創建數據庫(若未存在)
CREATE DATABASE mydatabase;
# 退出MySQL
exit;
# 導入備份文件
mysql -u root -p mydatabase < /backup/mydatabase_backup_20250930.sql

4. 恢復數據庫(物理備份)

# 停止MySQL服務
sudo systemctl stop mysqld
# 刪除原數據目錄(謹慎操作?。?/span>
sudo rm -rf /var/lib/mysql/*
# 復制備份的數據目錄
sudo cp -r /backup/mysql_physical_backup_20250930/* /var/lib/mysql/
# 修改權限(確保MySQL用戶擁有所有權)
sudo chown -R mysql:mysql /var/lib/mysql
# 啟動MySQL服務
sudo systemctl start mysqld

六、自動化備份設置(可選)

  1. 編寫備份腳本(如/usr/local/bin/php_backup.sh):
#!/bin/bash
# 定義變量
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d)
# 備份PHP文件
tar -czvf $BACKUP_DIR/php_files_$DATE.tar.gz /var/www/html/
# 備份數據庫
mysqldump -u root -p mydatabase > $BACKUP_DIR/mydatabase_$DATE.sql
# 刪除7天前的備份(保留最近7天)
find $BACKUP_DIR -name "php_files_*.tar.gz" -mtime +7 -delete
find $BACKUP_DIR -name "mydatabase_*.sql" -mtime +7 -delete
  1. 設置定時任務(每天凌晨2點執行):
# 編輯crontab
crontab -e
# 添加以下內容
0 2 * * * /usr/local/bin/php_backup.sh

注意事項

  1. 備份頻率:根據數據重要性設置(如每日全量+每小時增量);
  2. 存儲安全:備份文件需加密(如使用gpg)或存儲在異地;
  3. 權限檢查:確保備份/恢復操作的用戶有足夠權限(通常為root);
  4. 測試恢復:每月至少測試一次備份文件的恢復流程,確保有效性。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女