使用Clonezilla备份系统(cli版)

以下由ds生成,未经测试,谨慎操作

准备工作

  1. 从Clonezilla官网下载ISO并创建可启动USB
  2. 启动到Clonezilla环境
  3. 选择进入命令行模式(在启动菜单中选择"其他模式" > "Clonezilla shell")

备份Linux系统

1. 确定源设备和目标位置

首先需要识别要备份的源设备和备份存储位置:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
lsblk # 列出所有块设备
fdisk -l # 显示分区表
lsblk # 列出所有块设备 fdisk -l # 显示分区表
lsblk  # 列出所有块设备
fdisk -l  # 显示分区表

2. 使用partclone创建镜像(不推荐)

Clonezilla主要使用partclone工具进行备份:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 备份整个磁盘
partclone.dd -b -s /dev/sda -o /path/to/backup/sda.img
# 备份单个分区(例如根分区)
partclone.ext4 -b -s /dev/sda1 -o /path/to/backup/root-partition.img
# 压缩备份
partclone.ext4 -b -s /dev/sda1 | gzip -c > /path/to/backup/root-partition.img.gz
# 备份整个磁盘 partclone.dd -b -s /dev/sda -o /path/to/backup/sda.img # 备份单个分区(例如根分区) partclone.ext4 -b -s /dev/sda1 -o /path/to/backup/root-partition.img # 压缩备份 partclone.ext4 -b -s /dev/sda1 | gzip -c > /path/to/backup/root-partition.img.gz
# 备份整个磁盘
partclone.dd -b -s /dev/sda -o /path/to/backup/sda.img

# 备份单个分区(例如根分区)
partclone.ext4 -b -s /dev/sda1 -o /path/to/backup/root-partition.img

# 压缩备份
partclone.ext4 -b -s /dev/sda1 | gzip -c > /path/to/backup/root-partition.img.gz

3. 使用ocs-sr工具(Clonezilla专用,推荐)

Clonezilla提供了更高级的ocs-sr工具:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 备份整个磁盘
ocs-sr -q2 -j2 -z1 -i 4096 -sfsck -senc -p true savedisk mybackup /dev/sda
# 备份单个分区
ocs-sr -q2 -j2 -z1 -i 4096 -sfsck -senc -p true saveparts mybackup /dev/sda1
# 备份整个磁盘 ocs-sr -q2 -j2 -z1 -i 4096 -sfsck -senc -p true savedisk mybackup /dev/sda # 备份单个分区 ocs-sr -q2 -j2 -z1 -i 4096 -sfsck -senc -p true saveparts mybackup /dev/sda1
# 备份整个磁盘
ocs-sr -q2 -j2 -z1 -i 4096 -sfsck -senc -p true savedisk mybackup /dev/sda

# 备份单个分区
ocs-sr -q2 -j2 -z1 -i 4096 -sfsck -senc -p true saveparts mybackup /dev/sda1

参数说明:

  • -q2: 安静模式
  • -j2: 使用pbzip2多线程压缩
  • -z1: 压缩级别
  • -i 4096: 块大小
  • -sfsck: 备份前检查文件系统
  • -senc: 跳过检查目标空间
  • -p true: 提示确认

恢复Linux系统

1. 使用partclone恢复

如果前面使用了partclone命令备份

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 恢复整个磁盘
partclone.dd -r -s /path/to/backup/sda.img -o /dev/sda
# 恢复单个分区
partclone.ext4 -r -s /path/to/backup/root-partition.img -o /dev/sda1
# 从压缩备份恢复
gzip -dc /path/to/backup/root-partition.img.gz | partclone.ext4 -r -o /dev/sda1
# 恢复整个磁盘 partclone.dd -r -s /path/to/backup/sda.img -o /dev/sda # 恢复单个分区 partclone.ext4 -r -s /path/to/backup/root-partition.img -o /dev/sda1 # 从压缩备份恢复 gzip -dc /path/to/backup/root-partition.img.gz | partclone.ext4 -r -o /dev/sda1
# 恢复整个磁盘
partclone.dd -r -s /path/to/backup/sda.img -o /dev/sda

# 恢复单个分区
partclone.ext4 -r -s /path/to/backup/root-partition.img -o /dev/sda1

# 从压缩备份恢复
gzip -dc /path/to/backup/root-partition.img.gz | partclone.ext4 -r -o /dev/sda1

2. 使用ocs-sr工具恢复

如果前面使用了 ocs-sr备份
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 恢复整个磁盘
ocs-sr -g auto -e1 auto -e2 -r -j2 -p true restoredisk mybackup /dev/sda
# 恢复单个分区
ocs-sr -g auto -e1 auto -e2 -r -j2 -p true restoreparts mybackup /dev/sda1
# 恢复整个磁盘 ocs-sr -g auto -e1 auto -e2 -r -j2 -p true restoredisk mybackup /dev/sda # 恢复单个分区 ocs-sr -g auto -e1 auto -e2 -r -j2 -p true restoreparts mybackup /dev/sda1
# 恢复整个磁盘
ocs-sr -g auto -e1 auto -e2 -r -j2 -p true restoredisk mybackup /dev/sda

# 恢复单个分区
ocs-sr -g auto -e1 auto -e2 -r -j2 -p true restoreparts mybackup /dev/sda1

高级用法

网络备份

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 通过SSH备份到远程服务器
partclone.ext4 -b -s /dev/sda1 | ssh user@backup-server "cat > /backups/sda1.img"
# 通过SSH从远程服务器恢复
ssh user@backup-server "cat /backups/sda1.img" | partclone.ext4 -r -o /dev/sda1
# 通过SSH备份到远程服务器 partclone.ext4 -b -s /dev/sda1 | ssh user@backup-server "cat > /backups/sda1.img" # 通过SSH从远程服务器恢复 ssh user@backup-server "cat /backups/sda1.img" | partclone.ext4 -r -o /dev/sda1
# 通过SSH备份到远程服务器
partclone.ext4 -b -s /dev/sda1 | ssh user@backup-server "cat > /backups/sda1.img"

# 通过SSH从远程服务器恢复
ssh user@backup-server "cat /backups/sda1.img" | partclone.ext4 -r -o /dev/sda1

增量备份

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 首次完整备份
partclone.ext4 -b -s /dev/sda1 -o /backups/full-backup.img
# 后续差异备份
mkdir -p /backups/differential/
rsync -aHAX --delete --link-dest=/backups/full-backup/ /mnt/source/ /backups/differential/$(date +%Y%m%d)/
# 首次完整备份 partclone.ext4 -b -s /dev/sda1 -o /backups/full-backup.img # 后续差异备份 mkdir -p /backups/differential/ rsync -aHAX --delete --link-dest=/backups/full-backup/ /mnt/source/ /backups/differential/$(date +%Y%m%d)/
# 首次完整备份
partclone.ext4 -b -s /dev/sda1 -o /backups/full-backup.img

# 后续差异备份
mkdir -p /backups/differential/
rsync -aHAX --delete --link-dest=/backups/full-backup/ /mnt/source/ /backups/differential/$(date +%Y%m%d)/

 

注意事项

  1. 确保备份时有足够的存储空间
  2. 恢复操作会覆盖目标设备上的所有数据
  3. 对于正在运行的系统,最好从Live环境操作
  4. 备份前最好卸载分区umount /dev/sda1
  5. 可以使用-c参数进行校验和检查

通过以上命令,你可以灵活地使用Clonezilla命令行进行Linux系统的备份和恢复操作。

Leave a Reply

Your email address will not be published. Required fields are marked *