在 Ubuntu 系统中,使用 LNMP(Linux, Nginx, MySQL, PHP)堆栈时,可以通过编写脚本来实现自动备份。以下是一个简单的示例,展示了如何自动备份 MySQL 数据库和 Nginx 配置文件。
sudo apt-get update
sudo apt-get install mysqldump gzip tar cron
sudo mkdir -p /backup/mysql
sudo mkdir -p /backup/nginx
backup.sh
的脚本文件:sudo nano /etc/backup.sh
backup.sh
文件中:#!/bin/bash
# MySQL 数据库备份
DB_USER="your_mysql_user"
DB_PASSWORD="your_mysql_password"
DB_NAME="your_database_name"
DATE=$(date +"%Y%m%d%H%M%S")
BACKUP_DIR="/backup/mysql"
mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME | gzip > $BACKUP_DIR/$DB_NAME-$DATE.sql.gz
# Nginx 配置文件备份
NGINX_CONF="/etc/nginx/nginx.conf"
BACKUP_DIR_NGINX="/backup/nginx"
tar -czf $BACKUP_DIR_NGINX/nginx-$DATE.tar.gz $NGINX_CONF
# 删除 30 天前的备份文件
find /backup/mysql -type f -name "*.sql.gz" -mtime +30 -exec rm {} \;
find /backup/nginx -type f -name "*.tar.gz" -mtime +30 -exec rm {} \;
DB_USER="your_mysql_user"
DB_PASSWORD="your_mysql_password"
DB_NAME="your_database_name"
sudo chmod +x /etc/backup.sh
crontab
设置定时任务。运行以下命令以编辑当前用户的 crontab 文件:crontab -e
0 1 * * * /etc/backup.sh
注意:请确保根据实际情况修改数据库用户名、密码和名称。另外,可以将备份文件存储在本地或远程服务器上,以防止数据丢失。