作为IT工程师,以下是我整理的Linux系统常用备份与恢复命令,涵盖文件级和系统级备份方案:
# 创建备份 (gzip压缩)
tar -czvf backup.tar.gz /path/to/backup
# 创建备份 (xz压缩,更高压缩率)
tar -cJvf backup.tar.xz /path/to/backup
# 列出备份内容
tar -tzvf backup.tar.gz
# 恢复备份
tar -xzvf backup.tar.gz -C /restore/path
# 本地备份
rsync -avzh /source/path /destination/path
# 远程备份 (SSH)
rsync -avzhe ssh /source/path user@remote:/destination/path
# 恢复
rsync -avzh /backup/path /restore/path
# 备份整个磁盘/分区
dd if=/dev/sda of=/backup/sda.img bs=4M status=progress
# 恢复磁盘/分区
dd if=/backup/sda.img of=/dev/sda bs=4M status=progress
# 压缩备份
dd if=/dev/sda | gzip > /backup/sda.img.gz
# 安装 (Ubuntu/Debian)
sudo apt install timeshift
# 创建快照 (GUI推荐)
sudo timeshift --create --comments "Pre-update snapshot"
# 安装
sudo apt install deja-dup
# 图形界面操作更简单
# 备份单个数据库
mysqldump -u username -p database_name > backup.sql
# 备份所有数据库
mysqldump -u username -p --all-databases > all_backup.sql
# 恢复
mysql -u username -p database_name < backup.sql
# 备份单个数据库
pg_dump -U username -d dbname -f backup.sql
# 备份所有数据库
pg_dumpall -U username > all_backup.sql
# 恢复
psql -U username -d dbname -f backup.sql
#!/bin/bash
# 定义变量
BACKUP_DIR="/backups"
DATE=$(date +%Y%m%d)
LOG_FILE="/var/log/backup_$DATE.log"
# 创建备份目录
mkdir -p $BACKUP_DIR/$DATE
# 备份重要目录
tar -czvf $BACKUP_DIR/$DATE/system_etc.tar.gz /etc >> $LOG_FILE 2>&1
tar -czvf $BACKUP_DIR/$DATE/home.tar.gz /home >> $LOG_FILE 2>&1
# MySQL备份
mysqldump -u root -p'password' --all-databases > $BACKUP_DIR/$DATE/mysql_all.sql 2>> $LOG_FILE
# 保留最近7天备份
find $BACKUP_DIR -type d -mtime +7 -exec rm -rf {} \;
md5sum
或sha256sum
检查备份完整性选择哪种备份方法取决于您的具体需求,包括备份频率、数据量大小、恢复时间目标(RTO)和数据恢复点目标(RPO)等因素。