ubuntu

怎样设置Ubuntu LNMP的自动备份

小樊
48
2025-07-29 13:54:29
栏目: 智能运维

在Ubuntu LNMP(Linux, Nginx, MySQL, PHP)环境中设置自动备份可以确保数据的安全性和可靠性。以下是一个详细的步骤指南,涵盖了数据库、文件和系统的备份,并提供了恢复方法。

数据库备份

使用MySQL的内置工具 mysqldump 进行数据库备份。可以定期备份数据库,并将备份数据保存到安全的地方,如外部硬盘或云存储。

mysqldump -u username -p database_name > backup_file.sql

文件备份

定期备份Nginx的配置文件、PHP代码文件以及其他重要的文件。可以使用 rsynctar 等工具进行文件备份。

# 使用 rsync 备份 Nginx 配置文件
sudo rsync -av /etc/nginx /path/to/backup/nginx

# 使用 tar 备份 PHP 代码文件
sudo tar -czvf php_code_backup.tar.gz /path/to/php/code

系统备份

定期备份整个系统镜像,以便在系统崩溃或数据丢失时进行系统恢复。可以使用系统自带的备份工具 Deja DupTimeshift,或者使用命令行工具 dd

# 使用 Deja Dup 备份系统
sudo apt install deja-dup
Deja Dup

# 使用 Timeshift 备份系统
sudo apt install timeshift
Timeshift

恢复策略

mysql -u username -p database_name < backup_file.sql
# 使用 rsync 恢复文件
sudo rsync -av /path/to/backup/nginx /etc/nginx

# 使用 tar 恢复文件
sudo tar -xzvf php_code_backup.tar.gz -C /path/to/php
sudo dd if=/mnt/backup/system_backup.img of=/dev/sda bs=4M status progress

自动备份设置

为了确保备份的定期执行,可以使用 cron 设置定时任务。

  1. 创建备份脚本:例如 backup.sh,并添加以下内容:
#!/bin/bash
# 设置备份目录
BACKUP_DIR="/backup"
# 设置MySQL数据库信息
DB_USER="your_username"
DB_PASSWORD="your_password"
DB_NAME="your_database_name"
# 设置备份文件名
DATE=$(date +"%Y%m%d%H%M%S")
BACKUP_FILE= "$BACKUP_DIR/$DB_NAME - $DATE.sql"
# 执行mysqldump备份
mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_FILE
# 使用rsync备份Nginx和PHP文件
rsync -avz /etc/nginx $BACKUP_DIR/nginx_backup-$DATE.tar.gz
rsync -avz /etc/php $BACKUP_DIR/php_backup-$DATE.tar.gz
# 删除7天前的备份文件
find $BACKUP_DIR -type d -mtime +7 -exec rm -rf {} \;
find $BACKUP_DIR -type f -name "*.sql" -mtime +7 -exec rm -f {} \;
find $BACKUP_DIR -type f -name "*.tar.gz" -mtime +7 -exec rm -f {} \;
  1. 设置脚本权限:为备份脚本添加可执行权限。
chmod +x /path/to/backup.sh
  1. 配置Cron任务:使用 crontab -e 命令编辑Cron任务,添加以下内容以每天凌晨1点执行备份脚本。
0 1 * * * /path/to/backup.sh

0
看了该问题的人还看了