本文介绍如何使用rsync和Linux定时任务实现网站数据的自动化备份,确保数据安全。
备份方案概述
| 备份类型 | 频率 | 保留数量 |
|---|---|---|
| 全量备份 | 每周日 | 4份 |
| 增量备份 | 每日 | 7份 |
| 数据库备份 | 每6小时 | 12份 |
rsync安装与配置
安装rsync
sudo apt install rsync -y
sudo yum install rsync -y
rsync基本用法
rsync -avz /var/www/html/ /backup/website/
rsync -avz -e ssh /var/www/html/ user@backup-server:/backup/
rsync -avz --delete /var/www/html/ /backup/website/
参数说明:
- -a:归档模式
- -v:显示详细信息
- -z:压缩传输
- --delete:删除目标中多余的文件
备份脚本
创建备份脚本 /usr/local/bin/backup.sh:
#!/bin/bash
WEB_DIR="/var/www/html"
DB_NAME="wordpress"
DB_USER="root"
DB_PASS="yourpassword"
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d)
mkdir -p $BACKUP_DIR/$DATE
rsync -avz --delete $WEB_DIR/ $BACKUP_DIR/$DATE/files/
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/$DATE/database.sql.gz
find $BACKUP_DIR -type d -mtime +7 -exec rm -rf {} \;
echo "Backup completed: $DATE"
添加执行权限:
chmod +x /usr/local/bin/backup.sh
配置定时任务
编辑crontab:
crontab -e
添加备份任务:
0 2 * * * /usr/local/bin/backup.sh
0 */6 * * * mysqldump -uroot -pyourpassword wordpress | gzip > /backup/db_$(date +\%Y\%m\%d\%H).sql.gz
远程备份
配置SSH免密登录:
ssh-keygen -t rsa
ssh-copy-id backup@backup-server
修改备份脚本使用远程同步:
rsync -avz -e ssh $WEB_DIR/ backup@backup-server:/backup/website/
验证备份
ls -la /backup/
du -sh /backup/*
tar -xzf /backup/20260511/files.tar.gz -C /tmp/test/
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)