跳转到内容

最小化硬盘驱动器故障和数据丢失/Popdisk

来自维基教科书,开放世界中的开放书籍

克隆 NTFS 文件系统(以及其他)

[编辑 | 编辑源代码]

使用 knoppix 从/到 windows 共享备份和恢复 NTFS 分区

	Given:
Windows share is at \\192.168.2.3\y
The NTFS partitions to backup is the first partition on the primary IDE drive (hda1)

BACKUP
1. Boot from knoppix CD. 

2. Bring up a root terminal (click on little penguin at bottom left - select “root shell”) 
and create mount point:  mkdir  x

3. Mount windows share:  
mount -t smbfs //192.168.2.3/y x
or with a password:
mount -t smbfs -o username=xxxx,password=xxxx //192.168.2.3/y x

4. Move to mounted destination drive:  cd x 

5. Create partition backup:  
ntfsclone -s /dev/hda1 -o - | gzip | split -b 650m  - backup.hda1.gz

6. Back up boot sector:  dd bs=512 count=1 if=/dev/hda of=bsback.img

7. Back up partition info:  sfdisk -d /dev/hda >partitions.txt


RESTORE 
1. Boot from knoppix CD. 

2. Bring up a root terminal (click on little penguin at bottom left - select “root shell”) 
and create mount point:  mkdir  x

3. Mount windows share:  
mount -t smbfs //192.168.2.3/y x
or with a password:
mount -t smbfs -o username=scott,password=xxxx //192.168.2.3/y x

4. Move to mounted destination drive:  cd x

5. Restore boot sector:  dd count=1 bs=446 bs=if=bsback.img of=/dev/hda 
    Use "bs=446" to exclude the partition table from being written to disk, 
otherwise 512 will restore that too, but if the disk size is different, the you probably 
don't want the partition numbers restored. You can manually restore the table from the 
partitions.txt file info created in step 7 above.  
Another option, if a backup was not available, would be this command:  
      install-mbr /dev/hda 
  
  or from a dos boot disk:  fdisk /mbr

6. Restore partition:  
cat backup.hda1.gz* | gunzip -c backup.hda1.gz |ntfsclone -r -O /dev/hda1 -

示例脚本

[编辑 | 编辑源代码]

在进行备份之前,可以使用要备份的 PC 的主机名作为文件夹名准备一个文件夹。备份脚本应该被复制到文件夹中,并根据要备份的分区进行定制。然后,要创建备份,从 knoppix 挂载共享,用户移动到目录并执行脚本。备份完成。

然后,应将恢复脚本复制到目录中,并根据分区进行定制(如备份脚本)。在进行备份后,可以删除备份脚本,或将其移动到目录中的新文件夹以供参考。要恢复,相同的挂载共享 - 导航到文件夹 - 然后执行恢复脚本的过程将完成恢复。

sda2(ntfs 分区)的备份

ntfsclone -s /dev/sda2 -o - | gzip | split -b 2000m - sda2.gz
dd bs=512 count=1 if=/dev/sda of=bsback.img
sfdisk -d /dev/sda >partitions_sfdisk.txt
fdisk -l >partitions_fdisk.txt

sda2(ntfs 分区,磁盘必须与原始磁盘大小相同)的恢复

dd bs=512 count=1 if=bsback.img of=/dev/sda
sfdisk  /dev/sda < partitions_sfdisk.txt
cat sda2.gz* | gunzip -c  | ntfsclone -r -O /dev/sda2 -

Linux 分区的备份

partimage -z1 -c -d -o -b  /dev/sda1 sda1.partimage.img
partimage -z1 -c -d -o -b  /dev/sda2 sda2.partimage.img
partimage -z1 -c -d -o -b  /dev/sda4 sda4.partimage.img
dd bs=512 count=1 if=/dev/sda of=bsback.img
sfdisk -d /dev/sda >partitions_sfdisk.txt
fdisk -l >partitions_fdisk.txt

Linux 分区的恢复(还重新创建交换分区 sda3)

dd bs=512 count=1 if=bsback.img of=/dev/sda
sfdisk  /dev/sda < partitions_sfdisk.txt
partimage -b restore  /dev/sda1 sda1.partimg.img.000
partimage -b restore  /dev/sda2 sda2.partimg.img.000  
mkswap /dev/sda3
partimage -b restore  /dev/sda4 sda4.partimg.img.000

注意:FAT32 和其他分区类型也可以使用 partimage 非常高效地备份。NTFS 是 partimage 还没有很好地支持的一种分区类型(AFAIK),因此上面使用 ntfsclone。

  • 只能恢复到相同大小的磁盘,因为使用 dd 和 sfdisk 方法恢复主引导记录和分区。有一些方法可以克服此限制,但我还没有测试和微调它们。
  • 恢复完整的 Linux 系统时,可能需要调整 grub 配置,以便按数字而不是按名称指向分区,而现在许多较新的 Linux 发行版往往这样做。

其他想法 - 愿望清单

[编辑 | 编辑源代码]
  • 这些脚本可以在除 Windows 共享之外的其他目标类型上运行。这就是使用 knoppix 类型引导磁盘的优点。这里可能有一些关于挂载文件系统的说明。实时 Linux CD 至少可以挂载以下文件系统... 以便将备份发送到
    • 本地分区(NTFS、FAT32、EXT2、EXT3 是主要的)
    • USB 驱动器
    • NFS 共享
  • 希望创建一个脚本生成器,它检查本地磁盘并交互式地创建一个备份和恢复脚本以匹配。这将很有趣,而且可能非常有用 :)
  • 创建一些脚本以备份到本地 CD/DVD 驱动器,并使它们可启动。
  • 创建一个简化的、快速启动的实时 Linux CD,它只包含磁盘映像工具


其他提示

[编辑 | 编辑源代码]

克隆后重置坏扇区列表

当您将分区从带有坏扇区的磁盘克隆到新磁盘时,Windows 仍然在新磁盘上报告坏扇区。这是因为,根据设计,ntfsclone 复制所有内容,包括坏扇区列表。

虽然这与 ntfsclone 严格来说没有关系,但有些人可能会使用以下过程在克隆后重置坏扇区列表

  1. 备份分区中的重要数据,以防万一
  2. 使用 ntfsinfo 使用 ntfsinfo -i 8 <分区> 找出 $Badclus 中 '$Bad' 属性的大小。它将是“Dumping attribute $DATA (0×80)”中的“Allocated size”值(将有两个 0×80 属性。只有一个具有“Allocated size”行)。
  3. 使用 ntfstruncate <分区> 8 0x80 '$Bad' 0 将 $Bad 的属性长度设置为零。
  4. 使用 ntfstruncate <分区> 8 0x80 '$Bad' <ntfs_size> 将 $Bad 的属性长度重新设置为步骤 2 中记录的正确值。
  5. 启动进入 Windows 并运行 chkdsk。它将找到错误并应予以修复。

除非您确定坏扇区只是错误,否则建议在执行此操作后使用硬盘制造商的工具或 chkdsk /r 执行完整的面扫描。本段文字从http://www.linux-ntfs.org/doku.php?id=ntfsclone复制

进一步阅读

[编辑 | 编辑源代码]
华夏公益教科书