假设我有一个 10TB 阵列,希望将其备份到另一个异地的 10TB 阵列。我有一个 500GB 的便携式驱动器,可以用来移动数据。数据是静态的。如何在 Linux 上一次复制一个块?我意识到这意味着大约 20 次往返。
答案1
有几种选项,取决于您的文件系统、数据的大小和性质。
使用
dump
/restore
。这些命令非常可靠,可让您分块备份文件。虽然我无法为您提供所需的确切命令,但请阅读转储和恢复手册页并在线查找教程这应该能让你很好地了解如何进行。如果数组数据确实是静态的并且不会每天发生变化,则使用
dd
将逐字节复制并支持偏移量的函数。只需skip=offset
在从原始数组的设备读取时提供一个,seek=offset
在写入副本时提供一个。例如:origin$ dd if=/dev/array_device of=/dev/protable_device ibs=512 skip=3 count=1 # travel home... destination$ dd if=/dev/portable_device of=/dev/array_device obs=512 seek=3 count=1
显然,每次您都会希望复制超过 512 个字节,但您明白我的意思。再次重申,手册页相当不错,而且很有用。建议您在执行此操作时卸载阵列,这样就不会写入任何新内容。(或者,以只读方式安装。)
您还可以将 dd 导入 bzip2,以尽量减少占用的空间:
dd if=/dev/some_device | bzip2 -c >file.gz <file.gz bzip2 -d -c | dd of=/dev/some_device
我建议您写入文件并使用校验和来验证完整性。
一次复制一个目录,同时保留迄今为止已传输目录的清单。我自己也以这种方式传输了几个 TB,我认为这种方式出奇地容易管理。