# 确保备份用户有足够权限
sudo chown -R backupuser:backupgroup /backup/directory
sudo chmod -R 750 /backup/directory
# 使用root权限执行备份/恢复
sudo tar -cvpzf /backup/backup.tar.gz --exclude=/backup/backup.tar.gz --exclude=/proc --exclude=/tmp --exclude=/mnt --exclude=/dev --exclude=/sys /
# 检查源数据大小
du -sh /path/to/backup
# 检查目标位置可用空间
df -h /backup/location
# 使用rsync时添加--partial选项允许中断续传
rsync -avz --partial /source /destination
# 使用lsof检查被锁定的文件
lsof /path/to/locked/file
# 在非生产时段执行备份
# 或使用快照技术(LVM/ZFS)
lvcreate -L10G -s -n backup_snap /dev/vg00/lv00
mount /dev/vg00/backup_snap /mnt/snapshot
# 使用rsync with checksum
rsync -avz --checksum /source user@remote:/destination
# 或使用tar over ssh
tar -cvpz / | ssh user@remote "cat > /backup/backup-$(date +%Y%m%d).tar.gz"
# 使用rsync做增量备份
rsync -avz --link-dest=/path/to/previous/backup /source /new/backup
# 或使用tar增量备份
tar -g /backup/snapshot-file -cvpzf /backup/incr-$(date +%Y%m%d).tar.gz /source
BorgBackup (推荐)
# 安装
sudo apt install borgbackup # Debian/Ubuntu
sudo yum install borgbackup # RHEL/CentOS
# 初始化仓库
borg init --encryption=repokey /path/to/repo
# 创建备份
borg create /path/to/repo::backup-name-{now} /path/to/backup
# 恢复
borg extract /path/to/repo::backup-name
Timeshift (适合桌面系统)
sudo timeshift --create --comments "Regular backup" --tags D
ZFS快照 (如果使用ZFS文件系统)
zfs snapshot pool/dataset@backup-$(date +%Y%m%d)
zfs send pool/dataset@backup | ssh remote "zfs recv backup/dataset"
校验备份文件
# 对于tar备份
tar -tvf backup.tar.gz | less
# 对于Borg备份
borg list /path/to/repo
borg check /path/to/repo
定期测试恢复
# 在测试环境恢复部分数据
mkdir /tmp/restore-test
tar -xvzf backup.tar.gz -C /tmp/restore-test --strip-components=1 path/to/important/data
设置cron定时备份
# 编辑crontab
crontab -e
# 添加每日备份任务
0 2 * * * /usr/bin/borg create /path/to/repo::backup-{now} /path/to/backup >> /var/log/backup.log 2>&1
监控备份状态
# 检查最后一次备份时间
borg list /path/to/repo | tail -n 1
# 设置监控告警
if [ $(find /backup -name "*.tar.gz" -mtime -1 | wc -l) -eq 0 ]; then
echo "Backup failed!" | mail -s "Backup Alert" admin@example.com
fi
通过以上方法,您可以有效解决Linux系统中的备份恢复问题,确保数据安全可靠。