在 Linux 上备份 LNMP(Linux + Nginx + MySQL/MariaDB + PHP) 环境,通常要分三部分:网站文件、数据库、配置文件。下面给你一套实用、可落地的备份方案。
LNMP 一般要备份:
/home/wwwroot 或 /var/www)/home/wwwroot/
# 或
/var/www/html/
/etc/nginx/
/usr/local/nginx/conf/
/etc/my.cnf
/var/lib/mysql/ # 不建议直接拷,用 mysqldump 更稳
/etc/php.ini
/etc/php-fpm.conf
/usr/local/php/etc/
/etc/letsencrypt/
/usr/local/nginx/conf/ssl/
mysqldump -u root -p --all-databases > lnmp_mysql_$(date +%F).sql
只备份某个库:
mysqldump -u root -p dbname > dbname.sql
压缩:
mysqldump -u root -p --all-databases | gzip > lnmp_mysql_$(date +%F).sql.gz
tar zcf www_backup_$(date +%F).tar.gz /home/wwwroot
如只备份某一个站点:
tar zcf site_backup.tar.gz /home/wwwroot/example.com
tar zcf lnmp_conf_$(date +%F).tar.gz \
/etc/nginx \
/etc/php.ini \
/etc/php-fpm.conf \
/etc/my.cnf
如果是 OneinStack / LNMP 一键包:
tar zcf lnmp_conf.tar.gz /usr/local/nginx/conf /usr/local/php/etc
#!/bin/bash
DATE=$(date +%F)
BACKUP_DIR=/backup
mkdir -p $BACKUP_DIR
# 网站
tar zcf $BACKUP_DIR/www_$DATE.tar.gz /home/wwwroot
# 数据库
mysqldump -u root -pPASSWORD --all-databases | gzip > $BACKUP_DIR/mysql_$DATE.sql.gz
# 配置
tar zcf $BACKUP_DIR/conf_$DATE.tar.gz /etc/nginx /etc/php.ini /etc/my.cnf
保存为 backup.sh:
chmod +x backup.sh
./backup.sh
crontab -e
每天凌晨 3 点:
0 3 * * * /root/backup.sh
rsync -avz /backup/ user@backup-server:/data/backup/
scp /backup/* user@remote:/backup/
mysql -u root -p < lnmp_mysql.sql
tar zxf www_backup.tar.gz -C /
tar zxf conf_backup.tar.gz -C /
nginx -t
systemctl restart nginx
/home/wwwroot/usr/local/nginx/conf/root/oneinstack/backup.sh如果你愿意,可以告诉我:
我可以给你定制一套备份方案。