/var/www/html
、Nginx的/usr/share/nginx/html
);/etc/php.ini
(全局配置)或/etc/php.d/
(擴展配置);mydatabase
)。tar
、rsync
等基礎工具;若未安裝mysqldump
(MySQL備份工具),可通過sudo yum install mysql-server mysql-devel
安裝。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
排除不需要備份的文件類型。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.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)/
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格式,可直接導入。# 停止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
# 解壓tar備份文件
sudo tar -xzvf /backup/php_files_backup_20250930.tar.gz -C /
# 或使用rsync同步增量備份
sudo rsync -avz /backup/php_2025-09-30/ /var/www/html/
# 覆蓋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
# 登錄MySQL(確認數據庫是否存在,若不存在需先創建)
mysql -u root -p
# 創建數據庫(若未存在)
CREATE DATABASE mydatabase;
# 退出MySQL
exit;
# 導入備份文件
mysql -u root -p mydatabase < /backup/mydatabase_backup_20250930.sql
# 停止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
/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
# 編輯crontab
crontab -e
# 添加以下內容
0 2 * * * /usr/local/bin/php_backup.sh
gpg
)或存儲在異地;root
);