CentOS数据备份与恢复实现指南
tar是CentOS内置的归档工具,适合备份整个系统或指定目录,支持gzip/bzip2压缩,可排除无需备份的目录(如/proc、/sys)。
备份命令示例:
sudo tar cvpzf /backup/centos_backup_$(date +%Y%m%d).tar.gz --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/mnt --exclude=/media /
参数说明:
c:创建新的归档文件;v:显示详细过程;p:保留文件权限;z:用gzip压缩;f:指定备份文件路径。/backup),并替换/为需要备份的具体目录(如/home)。rsync通过对比源和目标文件的修改时间、大小,仅传输变化的部分,适合定期同步数据(如每日增量、每周全量)。
首次全量备份:
rsync -avz --delete /source/directory/ /destination/directory/
后续增量备份(结合--link-dest实现硬链接,节省空间):
rsync -avz --delete --link-dest=/destination/last_backup /source/directory/ /destination/directory/new_backup/
参数说明:
a:归档模式(保留权限、时间等);v:显示详细过程;z:压缩传输;--delete:删除目标目录中源目录不存在的文件(保持同步);--link-dest:指定上一次备份目录,相同文件创建硬链接。dd用于创建磁盘或分区的完整镜像,适合备份整个系统(包括引导分区、分区表),恢复时可还原到相同或更大容量的磁盘。
备份命令:
sudo dd if=/dev/sda of=/backup/centos_disk.img bs=4M status=progress
恢复命令:
sudo dd if=/backup/centos_disk.img of=/dev/sda bs=4M status=progress
参数说明:
if:输入文件(源磁盘/分区);of:输出文件(目标备份文件或磁盘);bs:块大小(提高传输效率,常用4M);status=progress:显示进度。Clonezilla是一款开源磁盘克隆工具,支持备份整个系统到镜像文件或直接克隆到其他磁盘,适合大规模系统部署。
操作步骤:
/dev/sda)和目标存储路径(如网络共享、外部硬盘);.img文件)。/dev/sdb);对于MySQL/MariaDB数据库,使用mysqldump工具导出数据库结构和数据,支持压缩和远程备份。
备份命令:
mysqldump -u root -p --all-databases --single-transaction --quick --add-drop-database | gzip > /backup/all_databases_$(date +%Y%m%d).sql.gz
参数说明:
--all-databases:备份所有数据库;--single-transaction:使用事务保证一致性(InnoDB适用);--quick:逐行导出数据,减少内存占用;--add-drop-database:导出前添加DROP DATABASE语句(避免恢复时冲突);| gzip:压缩备份文件。gunzip < /backup/all_databases_$(date +%Y%m%d).sql.gz | mysql -u root -p
sudo tar xvpfz /backup/centos_backup_$(date +%Y%m%d).tar.gz -C /
rsync -avz /backup/directory/ /source/directory/
mysqldump恢复命令,确保数据库服务已停止(避免数据冲突)。extundelete适用于ext3/ext4文件系统,需在未写入新数据的情况下使用(立即卸载分区)。
安装与恢复步骤:
sudo yum install extundelete -y
/dev/sdb1,挂载在/mnt/data):sudo umount /mnt/data
/mnt/data/test.txt):sudo extundelete /dev/sdb1 --restore-file /mnt/data/test.txt
sudo extundelete /dev/sdb1 --restore-all
恢复的文件会保存在当前目录下的RECOVERED_FILES文件夹中。TestDisk支持恢复丢失的分区表、引导扇区,以及误删除的文件(适用于ext2/ext3/ext4、NTFS等文件系统)。
操作步骤:
sudo yum install testdisk -y
sudo testdisk
/dev/sda),按提示选择分区类型(Intel/EFI);