3.8.3 备份工具与实践:tar/rsync/dd
3.8.3 备份工具与实践:tar/rsync/dd#
原理与选型概览
安装与环境准备
# 常见发行版默认已安装,如无则安装
# Debian/Ubuntu
apt-get update && apt-get install -y tar rsync coreutils
# RHEL/CentOS/Rocky
yum install -y tar rsync coreutils
# 验证版本
tar --version
rsync --version
dd --version
tar 归档备份实践(文件级)
- 适用:目录归档、离线保存、迁移
# 1) 全量归档 /etc 到 /backup,保留权限与时间
mkdir -p /backup
tar -czpf /backup/etc-$(date +%F).tar.gz /etc
# 2) 排除缓存目录
tar -czpf /backup/www-$(date +%F).tar.gz /var/www \
--exclude=/var/www/cache --exclude=/var/www/tmp
# 3) 查看归档内容(校验是否包含关键文件)
tar -tzf /backup/etc-$(date +%F).tar.gz | head
# 4) 恢复到根目录(谨慎覆盖)
tar -xzpf /backup/etc-$(date +%F).tar.gz -C /
命令解释(tar)
- -c 创建归档;-x 解压;-z gzip 压缩
- -p 保留权限;-f 指定文件
- --exclude 排除路径
rsync 增量同步实践(文件级增量)
- 适用:持续同步、远程备份、镜像一致
# 1) 本地增量同步,保持目标与源一致
rsync -av --delete /data/ /backup/data/
# 2) 远程推送备份(推荐只推送到备份机)
rsync -avz --delete /data/ backup@10.0.0.10:/backup/data/
# 3) 限速与断点续传,适合跨机房
rsync -avz --bwlimit=50m --partial /data/ backup@10.0.0.10:/backup/data/
# 4) 排除日志与缓存目录
rsync -av --delete --exclude='*.log' --exclude='cache/' /var/www/ /backup/www/
命令解释(rsync)
- -a 归档模式(保权限/时间/软链)
- -v 显示过程;-z 传输压缩
- --delete 删除目标多余文件(慎用)
- --partial 保留中断文件,便于续传
dd 块级镜像实践(块级)
- 适用:整盘/分区克隆、系统盘快速复制
# 1) 分区镜像(离线或只读挂载更安全)
dd if=/dev/sdb1 of=/backup/sdb1.img bs=4M status=progress
# 2) 整盘镜像
dd if=/dev/sdb of=/backup/sdb.img bs=4M status=progress
# 3) 结合压缩节省空间
dd if=/dev/sdb1 bs=4M | gzip > /backup/sdb1.img.gz
# 4) 恢复镜像到分区(会覆盖目标)
dd if=/backup/sdb1.img of=/dev/sdb1 bs=4M status=progress
命令解释(dd)
- if 输入文件/设备;of 输出文件/设备
- bs=4M 块大小提高性能
- status=progress 显示进度
备份脚本示例(tar + rsync 联合)
#!/bin/bash
# /usr/local/bin/backup.sh
set -e
SRC=/data
DST=/backup
DATE=$(date +%F)
mkdir -p "${DST}/archive" "${DST}/mirror"
# 1) rsync 镜像
rsync -av --delete "${SRC}/" "${DST}/mirror/"
# 2) tar 归档(归档镜像目录,避免直接归档在线目录)
tar -czpf "${DST}/archive/data-${DATE}.tar.gz" "${DST}/mirror"
# 3) 记录日志
echo "$(date +%F\ %T) backup done" >> /var/log/backup.log
排错要点
- tar 解压报 “Permission denied”:以 root 执行或调整目标目录权限
- rsync 连接失败:检查 ssh 端口、防火墙、/etc/hosts.allow
- rsync 误删:确认 --delete 是否必要,先用 --dry-run 预演
rsync -av --delete --dry-run /data/ /backup/data/
- dd 目标设备错误:务必
lsblk确认目标盘,避免覆盖
lsblk -f
练习
1. 用 tar 备份 /etc 并验证归档中是否包含 passwd 文件。
2. 配置 rsync 将 /var/www 同步到远程 10.0.0.10:/backup/www,要求限速 20MB/s。
3. 使用 dd 制作 /dev/sdb1 分区镜像并计算镜像文件大小,分析压缩前后空间变化。