在 Debian 上备份 LAMP(Linux + Apache + MySQL/MariaDB + PHP) 环境,通常要备份三部分:网站文件、数据库、配置文件。下面给你一套实用、可操作的方案。
默认网站目录一般在:
/var/www/html
tar -czvf /backup/www-backup-$(date +%F).tar.gz /var/www
tar -czvf /backup/www-backup.tar.gz \
--exclude=/var/www/html/cache \
--exclude=/var/www/html/tmp \
/var/www
mysqldump -u root -p --all-databases | gzip > /backup/mysql-all-$(date +%F).sql.gz
或单个数据库:
mysqldump -u root -p dbname | gzip > /backup/dbname-$(date +%F).sql.gz
systemctl stop mariadb
tar -czvf /backup/mysql-data.tar.gz /var/lib/mysql
systemctl start mariadb
tar -czvf /backup/apache-conf.tar.gz /etc/apache2
tar -czvf /backup/php-conf.tar.gz /etc/php
tar -czvf /backup/mysql-conf.tar.gz /etc/mysql
#!/bin/bash
BACKUP_DIR=/backup
DATE=$(date +%F)
mkdir -p $BACKUP_DIR
# 网站
tar -czvf $BACKUP_DIR/www-$DATE.tar.gz /var/www
# 数据库
mysqldump -u root -pPASSWORD --all-databases | gzip > $BACKUP_DIR/mysql-$DATE.sql.gz
# 配置
tar -czvf $BACKUP_DIR/conf-$DATE.tar.gz /etc/apache2 /etc/php /etc/mysql
赋权并执行:
chmod +x backup.sh
./backup.sh
crontab -e
每天凌晨 2 点备份:
0 2 * * * /root/backup.sh
rsync -avz /backup/ user@remote:/remote/backup/
scp /backup/* user@remote:/backup/
/var/wwwgunzip < mysql.sql.gz | mysql -u root -p
/etc 对应目录并重启服务如果你愿意,我可以: