tar是CentOS中最常用的归档工具,可将系统或目录打包为压缩文件(如.tar.gz),保留文件权限、属性等信息。
全量备份命令:
sudo tar cvpzf /path/to/backup.tar.gz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys /
c:创建新归档;v:显示详细过程;p:保留权限;z:用gzip压缩;f:指定文件名。--exclude:排除无需备份的目录(如虚拟文件系统、临时目录)。sudo tar xvpfz /path/to/backup.tar.gz -C /
x:解压;C:指定解压目标目录(此处为根目录/)。rsync通过对比源和目标文件的差异,仅传输变化的部分,适合定期增量备份或远程同步。
首次全量备份:
sudo rsync -aAXv --delete /source/directory/ /destination/directory/
-a:归档模式(保留权限、时间戳等);-A:保留ACL;-X:保留扩展属性;--delete:删除目标中源不存在的文件(保持严格同步)。sudo rsync -aAXv --delete --link-dest=/previous/backup/ /source/directory/ /new/backup/
--link-dest:指向上次备份目录,相同文件通过硬链接引用,减少存储占用。dd可创建磁盘或分区的逐字节镜像,包含分区表、引导扇区等,适合灾难恢复(如磁盘损坏)。
备份命令:
sudo dd if=/dev/sda of=/path/to/backup.img bs=4M status=progress
if:输入文件(源磁盘,如/dev/sda);of:输出文件(镜像文件);bs:块大小(提高速度,如4M);status=progress:显示进度。sudo dd if=/path/to/backup.img of=/dev/sda bs=4M status=progress
⚠️ 注意:if和of参数顺序错误会导致目标磁盘数据覆盖,操作前务必确认设备名称!
Clonezilla是开源磁盘克隆工具,支持创建系统镜像并存储到外部设备(如U盘、NAS),支持增量备份和多设备恢复。
操作步骤:
数据库数据需单独备份,避免文件系统备份遗漏或损坏。
MySQL备份(mysqldump):
mysqldump -u [用户名] -p[密码] [数据库名] > /path/to/backup.sql
mydb数据库:mysqldump -u root -p mydb > /backups/mydb.sql。pg_dump -U [用户名] -d [数据库名] > /path/to/backup.sql
postgres数据库:pg_dump -U postgres postgres > /backups/postgres.sql。tar xvpfz backup.tar.gz -C /解压到根目录。rsync -av /backup/directory/ /同步回原系统。dd if=backup.img of=/dev/sda恢复磁盘镜像。mysql -u root -p dbname < backup.sql导入MySQL备份;psql -U postgres dbname < backup.sql导入PostgreSQL备份。sudo yum install extundelete -y
sudo extundelete /dev/sda1 --restore-file /path/to/deleted/file.txt
--restore-file:指定误删文件路径;--restore-directory:恢复整个目录。sudo yum install testdisk -y
sudo testdisk
按向导选择“Analyze”→“Quick Search”→“Write”恢复分区表或文件。/etc、/home)、配置文件、数据库及用户数据。crontab -e设置自动备份,例如每日凌晨1点备份:0 1 * * * /usr/bin/tar -czvf /backups/system_$(date +\%F).tar.gz --exclude=/proc --exclude=/lost+found /
(%需转义为\%,避免cron解析错误)。tar文件、挂载dd镜像),确保可恢复。/proc、/sys、/dev等虚拟文件系统,减少备份体积和错误。