Linux 迁移数据到大硬盘

作者: 四明羽客 | 来源:发表于2016-04-07 15:25 被阅读978次

    我有一个块1T的硬盘用来备份数据,但在工作了一段时间之后,硬盘满了。
    我买了一块4T的硬盘用来替换它,但1T硬盘中的数据还有用,所以必须将数据迁移到4T硬盘中。

    首先说明下两个硬盘的情况:
    1T硬盘(/dev/sdc)采用msdos分区表,只划分了一个分区 /dev/sdc1,容量为1T,文件系统类型EXT4
    4T硬盘(/dev/sdb)采用GPT分区表,也只划分了一个分区/dev/sdb1,容量为4T,文件系统类型EXT4

    拷贝开始,使用dd工具从1T硬盘拷贝数据到4T盘,命令如下:

    # dd if=/dev/sdc1 of=/dev/sdb1

    提示,可以另开一个终端输入

    # watch -n 1 killall -USER1 dd

    命令来显示拷贝进度

    关于dd工具的具体使用方法见man
    这里要注意的是拷贝的源和目标分别是/dev/sdc1/dev/sdb1 这两个分区,而不是/dev/sdc/dev/sdb这两个硬盘名称
    如果使用硬盘名称作为源和目标,那么因为dd是二进制拷贝,会用1T 硬盘的分区表和分区信息覆盖4T硬盘的分区表和分区信息,而我们知道msdos分区表是不支持2T以上的硬盘的。

    dd工具会将uuid也一起拷贝,所以拷贝完成之后,只要将1T的硬盘拆卸下来,替换上4T的硬盘,不用修改/etc/fstab文件,就能按照你以前的设置自动挂载。

    做完上述操作之后,使用df -h命令查看,会发现4T的硬盘虽然已经自动挂载了,但它显示的容量却不对,明明/dev/sdb1分区划分了4T,但用df命令查看却发现,它的总容量竟然是1T,也就是之前1T硬盘/dev/sdc1分区的总容量。

    这是因为文件系统没有更新硬盘信息,依然按照之前的1T 硬盘在计算容量。可以使用e2fsckresize2fs工具修改此问题。参考

    # umount /dev/sdb1         // 记得在操作之前先卸载所有挂载
    # e2fsck -f /dev/sdb1
    # resize2fs /dev/sdb1

    相关文章

      网友评论

        本文标题:Linux 迁移数据到大硬盘

        本文链接:https://www.haomeiwen.com/subject/elnmlttx.html