本文介绍如何使用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/
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。