内容大纲
内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。
1. 备份概述
备份是保护数据安全的重要措施。根据备份策略的不同,可以分为完全备份、增量备份和差异备份。选择合适的备份工具和策略对于数据恢复至关重要。
学习交流加群风哥QQ113257174
# 完全备份:备份所有数据
# 增量备份:只备份自上次备份以来修改的数据
# 差异备份:备份自上次完全备份以来修改的数据
# 备份工具
# tar:归档工具,适合文件级备份
# rsync:同步工具,适合增量备份
# dd:块级复制工具,适合磁盘级备份
2. 使用tar备份
风哥提示:
使用tar命令创建和恢复备份。
# 1. 创建完全备份
[root@localhost ~]# tar -czvf /backup/full-backup-$(date +%Y%m%d).tar.gz /data
tar: Removing leading `/’ from member names
/data/
/data/file1.txt
/data/file2.txt
/data/file3.txt
/data/dir1/
/data/dir1/file4.txt
/data/dir1/file5.txt
# 2. 查看备份内容
[root@localhost ~]# tar -tzvf /backup/full-backup-20260403.tar.gz | head -10
drwxr-xr-x root/root 0 2026-04-03 10:00 /data/
-rw-r–r– root/root 0 2026-04-03 10:00 /data/file1.txt
-rw-r–r– root/root 0 2026-04-03 10:00 /data/file2.txt
-rw-r–r– root/root 0 2026-04-03 10:00 /data/file3.txt
drwxr-xr-x root/root 0 2026-04-03 10:00 /data/dir1/
-rw-r–r– root/root 0 2026-04-03 10:00 /data/dir1/file4.txt
-rw-r–r– root/root 0 2026-04-03 10:00 /data/dir1/file5.txt
# 3. 恢复备份
[root@localhost ~]# tar -xzvf /backup/full-backup-20260403.tar.gz -C /restore
/data/
/data/file1.txt
/data/file2.txt
/data/file3.txt
/data/dir1/
/data/dir1/file4.txt
/data/dir1/file5.txt
# 4. 创建增量备份
[root@localhost ~]# tar -czvf /backup/incremental-backup-$(date +%Y%m%d).tar.gz -g /backup/backup.snar /data
tar: Removing leading `/’ from member names
/data/
/data/file6.txt
# 5. 查看备份文件大小
[root@localhost ~]# ls -lh /backup/
total 200M
-rw-r–r– 1 root root 100M Apr 3 10:00 full-backup-20260403.tar.gz
-rw-r–r– 1 root root 50M Apr 3 10:10 incremental-backup-20260403.tar.gz
-rw-r–r– 1 root root 50M Apr 3 10:20 incremental-backup-20260403-2.tar.gz
# 6. 恢复增量备份
[root@localhost ~]# tar -xzvf /backup/full-backup-20260403.tar.gz -C /restore
[root@localhost ~]# tar -xzvf /backup/incremental-backup-20260403.tar.gz -g /backup/backup.snar -C /restore
tar: Removing leading `/’ from member names
/data/
/data/file6.txt
3. 使用rsync备份
使用rsync命令进行增量备份和同步。
# 1. 创建rsync备份
[root@localhost ~]# rsync -avz /data/ /backup/data-backup/
sending incremental file list
./
file1.txt
file2.txt
file3.txt
dir1/
dir1/file4.txt
dir1/file5.txt
sent 1,234 bytes received 87 bytes 2,642.00 bytes/sec
total size is 1,234 speedup is 0.97
# 2. 查看备份内容
[root@localhost ~]# ls -la /backup/data-backup/
total 8
drwxr-xr-x 3 root root 4096 Apr 3 10:00 .
drwxr-xr-x 3 root root 4096 Apr 3 10:00 ..
drwxr-xr-x 2 root root 4096 Apr 3 10:00 dir1
-rw-r–r– 1 root root 0 Apr 3 10:00 file1.txt
-rw-r–r– 1 root root 0 Apr 3 10:00 file2.txt
-rw-r–r– 1 root root 0 Apr 3 10:00 file3.txt
# 3. 增量同步
[root@localhost ~]# echo “new content” > /data/file6.txt
[root@localhost ~]# rsync -avz –delete /data/ /backup/data-backup/
sending incremental file list
deleting file5.txt
./
file6.txt
sent 234 bytes received 48 bytes 564.00 bytes/sec
total size is 1,234 speedup is 4.42
# 4. 使用rsync进行远程备份
[root@localhost ~]# rsync -avz -e ssh /data/ user@backup-server:/backup/data-backup/
sending incremental file list
./
file1.txt
file2.txt
file3.txt
file6.txt
dir1/
dir1/file4.txt
sent 1,234 bytes received 87 bytes 2,642.00 bytes/sec
total size is 1,234 speedup is 0.97
# 5. 查看rsync传输统计
[root@localhost ~]# rsync -avz –stats /data/ /backup/data-backup/
sending incremental file list
Number of files: 6
Number of files transferred: 1
Total file size: 1,234 bytes
Total transferred file size: 12 bytes
Literal data: 12 bytes
Matched data: 0 bytes
File list size: 0
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 1,234
Total bytes received: 48
sent 1,234 bytes received 48 bytes 2,564.00 bytes/sec
total size is 1,234 speedup is 0.97
# 6. 使用rsync进行镜像备份
[root@localhost ~]# rsync -avz –delete –backup –backup-dir=/backup/deleted-$(date +%Y%m%d) /data/ /backup/data-backup/
sending incremental file list
deleting file5.txt
./
file6.txt
sent 234 bytes received 48 bytes 564.00 bytes/sec
total size is 1,234 speedup is 4.42
4. 使用dd备份
使用dd命令进行磁盘级备份。
# 1. 备份整个磁盘
[root@localhost ~]# dd if=/dev/sda of=/backup/sda-backup.img bs=4M status=progress
5242880000 bytes (5.2 GB, 4.8 GiB) copied, 120 s, 43.7 MB/s
1305+1 records in
1305+1 records out
5476083200 bytes (5.5 GB) transferred in 120.001 s, 45.6 MB/s
# 2. 查看备份文件大小
[root@localhost ~]# ls -lh /backup/sda-backup.img
-rw-r–r– 1 root root 5.1G Apr 3 10:00 /backup/sda-backup.img
# 3. 压缩备份文件
[root@localhost ~]# gzip /backup/sda-backup.img
[root@localhost ~]# ls -lh /backup/sda-backup.img.gz
-rw-r–r– 1 root root 2.5G Apr 3 10:05 /backup/sda-backup.img.gz
# 4. 备份分区
[root@localhost ~]# dd if=/dev/sda1 of=/backup/sda1-backup.img bs=4M status=progress
1048576000 bytes (1.0 GB, 1000 MiB) copied, 30 s, 34.9 MB/s
250+1 records in
250+1 records out
1048576000 bytes (1.0 GB) transferred in 30.001 s, 34.9 MB/s
# 5. 恢复磁盘备份
[root@localhost ~]# dd if=/backup/sda-backup.img of=/dev/sdb bs=4M status=progress
5476083200 bytes (5.5 GB, 5.1 GiB) copied, 120 s, 45.6 MB/s
1305+1 records in
1305+1 records out
5476083200 bytes (5.5 GB) transferred in 120.001 s, 45.6 MB/s
# 6. 验证备份完整性
[root@localhost ~]# md5sum /backup/sda-backup.img
abc123def456789012345678901234ab /backup/sda-backup.img
5. 自动化备份
配置自动化备份脚本和定时任务。
学习交流加群风哥微信: itpux-com
# 1. 创建备份脚本
[root@localhost ~]# cat > /usr/local/bin/backup.sh << 'EOF'
#!/bin/bash
# script.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# 备份脚本
BACKUP_DIR="/backup"
DATA_DIR="/data"
LOG_FILE="/var/log/backup.log"
# 记录日志函数
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE
}
# 创建备份目录
mkdir -p $BACKUP_DIR
# 完全备份
full_backup() {
log “Starting full backup…”
tar -czvf $BACKUP_DIR/full-backup-$(date +%Y%m%d).tar.gz $DATA_DIR >> $LOG_FILE 2>&1
log “Full backup completed.”
}
# 增量备份
incremental_backup() {
log “Starting incremental backup…”
tar -czvf $BACKUP_DIR/incremental-backup-$(date +%Y%m%d).tar.gz -g $BACKUP_DIR/backup.snar $DATA_DIR >> $LOG_FILE 2>&1
log “Incremental backup completed.”
}
# 清理旧备份
cleanup_old_backups() {
log “Cleaning up old backups…”
find $BACKUP_DIR -name “*.tar.gz” -mtime +7 -delete
log “Old backups cleaned up.”
}
# 主函数
main() {
case “$1” in
full)
full_backup
;;
incremental)
incremental_backup
;;
cleanup)
cleanup_old_backups
;;
*)
echo “Usage: $0 {full|incremental|cleanup}”
exit 1
;;
esac
}
# 执行主函数
main “$@”
EOF
# 2. 设置脚本执行权限
[root@localhost ~]# chmod +x /usr/local/bin/backup.sh
# 3. 创建日志文件
[root@localhost ~]# touch /var/log/backup.log
[root@localhost ~]# chmod 644 /var/log/backup.log
# 4. 配置定时任务
[root@localhost ~]# cat > /etc/cron.d/backup << 'EOF'
# 备份定时任务
0 2 * * 0 root /usr/local/bin/backup.sh full
0 2 * * 1-6 root /usr/local/bin/backup.sh incremental
0 3 * * * root /usr/local/bin/backup.sh cleanup
EOF
# 5. 重启cron服务
[root@localhost ~]# systemctl restart crond
# 6. 测试备份脚本
[root@localhost ~]# /usr/local/bin/backup.sh full
# 7. 查看日志
[root@localhost ~]# tail -f /var/log/backup.log
[2026-04-03 10:00:00] Starting full backup...
[2026-04-03 10:00:10] Full backup completed.
# 8. 查看备份文件
[root@localhost ~]# ls -lh /backup/
total 100M
-rw-r--r-- 1 root root 100M Apr 3 10:00 full-backup-20260403.tar.gz
-rw-r--r-- 1 root root 50 Apr 3 10:00 backup.snar
# 9. 配置日志轮转
[root@localhost ~]# cat > /etc/logrotate.d/backup << 'EOF'
/var/log/backup.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0644 root root
}
EOF
# 10. 测试日志轮转
[root@localhost ~]# logrotate -f /etc/logrotate.d/backup
更多学习教程公众号风哥教程itpux_com
iv>
6. 实战案例
配置完整的备份和恢复系统。
# 1. 创建综合备份脚本
[root@localhost ~]# cat > /usr/local/bin/comprehensive-backup.sh << 'EOF'
#!/bin/bash
# 综合备份脚本
BACKUP_DIR="/backup"
DATA_DIRS="/data /home /etc"
LOG_FILE="/var/log/comprehensive-backup.log"
ALERT_EMAIL="admin@fgedu.net.cn"
# 记录日志函数
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE
}
# 发送告警邮件
send_alert() {
echo “$1” | mail -s “Backup Alert” $ALERT_EMAIL
}
# 创建备份目录
mkdir -p $BACKUP_DIR
# 文件级备份
file_backup() {
log “Starting file backup…”
for dir in $DATA_DIRS; do
BACKUP_FILE=”$BACKUP_DIR/$(basename $dir)-backup-$(date +%Y%m%d).tar.gz”
if tar -czvf $BACKUP_FILE $dir >> $LOG_FILE 2>&1; then
log “File backup for $dir completed successfully.”
else
log “ERROR: File backup for $dir failed.”
send_alert “File backup for $dir failed.”
fi
done
}
# 数据库备份
database_backup() {
log “Starting database backup…”
if command -v mysqldump &> /dev/null; then
DB_BACKUP_FILE=”$BACKUP_DIR/mysql-backup-$(date +%Y%m%d).sql.gz”
if mysqldump –all-databases | gzip > $DB_BACKUP_FILE; then
log “Database backup completed successfully.”
else
log “ERROR: Database backup failed.”
send_alert “Database backup failed.”
fi
fi
}
# 磁盘级备份
disk_backup() {
log “Starting disk backup…”
DISK_BACKUP_FILE=”$BACKUP_DIR/disk-backup-$(date +%Y%m%d).img.gz”
if dd if=/dev/sda bs=4M | gzip > $DISK_BACKUP_FILE 2>> $LOG_FILE; then
log “Disk backup completed successfully.”
else
log “ERROR: Disk backup failed.”
send_alert “Disk backup failed.”
fi
}
# 远程备份
remote_backup() {
log “Starting remote backup…”
if rsync -avz –delete $BACKUP_DIR/ user@backup-server:/remote-backup/ >> $LOG_FILE 2>&1; then
log “Remote backup completed successfully.”
else
log “ERROR: Remote backup failed.”
send_alert “Remote backup failed.”
fi
}
# 清理旧备份
cleanup_old_backups() {
log “Cleaning up old backups…”
find $BACKUP_DIR -name “*.tar.gz” -mtime +7 -delete
find $BACKUP_DIR -name “*.sql.gz” -mtime +7 -delete
find $BACKUP_DIR -name “*.img.gz” -mtime +7 -delete
log “Old backups cleaned up.”
}
# 主函数
main() {
log “Starting comprehensive backup…”
file_backup
database_backup
disk_backup
remote_backup
cleanup_old_backups
log “Comprehensive backup completed.”
}
# 执行主函数
main
EOF
# 2. 设置脚本执行权限
[root@localhost ~]# chmod +x /usr/local/bin/comprehensive-backup.sh
# 3. 创建日志文件
[root@localhost ~]# touch /var/log/comprehensive-backup.log
[root@localhost ~]# chmod 644 /var/log/comprehensive-backup.log
# 4. 配置定时任务
[root@localhost ~]# echo “0 2 * * * root /usr/local/bin/comprehensive-backup.sh” > /etc/cron.d/comprehensive-backup
# 5. 重启cron服务
[root@localhost ~]# systemctl restart crond
# 6. 测试备份脚本
[root@localhost ~]# /usr/local/bin/comprehensive-backup.sh
# 7. 查看日志
[root@localhost ~]# tail -f /var/log/comprehensive-backup.log
[2026-04-03 10:00:00] Starting comprehensive backup…
[2026-04-03 10:00:05] Starting file backup…
[2026-04-03 10:00:10] File backup for /data completed successfully.
[2026-04-03 10:00:15] File backup for /home completed successfully.
[2026-04-03 10:00:20] File backup for /etc completed successfully.
[2026-04-03 10:00:25] Starting database backup…
[2026-04-03 10:00:30] Database backup completed successfully.
[2026-04-03 10:00:35] Starting disk backup…
[2026-04-03 10:05:00] Disk backup completed successfully.
[2026-04-03 10:05:05] Starting remote backup…
[2026-04-03 10:05:10] Remote backup completed successfully.
[2026-04-03 10:05:15] Cleaning up old backups…
[2026-04-03 10:05:20] Old backups cleaned up.
[2026-04-03 10:05:25] Comprehensive backup completed.
# 8. 查看备份文件
[root@localhost ~]# ls -lh /backup/
total 3.0G
-rw-r–r– 1 root root 100M Apr 3 10:00 data-backup-20260403.tar.gz
-rw-r–r– 1 root root 50M Apr 3 10:00 home-backup-20260403.tar.gz
-rw-r–r– 1 root root 10M Apr 3 10:00 etc-backup-20260403.tar.gz
-rw-r–r– 1 root root 500M Apr 3 10:00 mysql-backup-20260403.sql.gz
-rw-r–r– 1 root root 2.5G Apr 3 10:05 disk-backup-20260403.img.gz
# 9. 测试恢复
[root@localhost ~]# mkdir -p /restore/data
[root@localhost ~]# tar -xzvf /backup/data-backup-20260403.tar.gz -C /restore/data
data/
data/file1.txt
data/file2.txt
data/file3.txt
# 10. 验证恢复数据
[root@localhost ~]# ls -la /restore/data/data/
total 0
drwxr-xr-x 2 root root 4096 Apr 3 10:00 .
drwxr-xr-x 3 root root 4096 Apr 3 10:00 ..
-rw-r–r– 1 root root 0 Apr 3 10:00 file1.txt
-rw-r–r– 1 root root 0 Apr 3 10:00 file2.txt
-rw-r–r– 1 root root 0 Apr 3 10:00 file3.txt
提示
from PG视频:www.itpux.com
定期测试备份恢复过程,确保备份文件可用。对于关键数据,建议使用3-2-1备份策略:3份副本、2种不同介质、1份异地备份。考虑使用专业的备份软件如Bacula、Amanda等。
