Answers:
使用rsync。在新主机上,您可以使用
rsync -avP --numeric-ids --exclude='/dev' --exclude='/proc' --exclude='/sys' root@failedharddrivehost:/ /path/to/destination/
我不会尝试使用tar之类的东西,因为当文件损坏时它可能无法工作。
如果两台计算机都位于同一(安全)LAN上,则我建议使用另一种方法netcat
。这通常会更快,因为它不会加密数据。
root@good_host$ cd good_partition; netcat -l -p 1234 | tar xvpmf -
root@bad_host$ tar -cv -f- --exclude=/proc --exclude=/sys / | netcat good_host.ip 1234
这将在正常计算机上打开侦听端口1234,并将netcat -l -p 1234
输入的数据通过管道传递tar
到要提取的位置(保留mtime和权限)。错误的主机也使用tar
和将数据发送到该端口netcat
。我包括了一些--exclude
参数,因为/proc
和/sys
是虚拟文件系统,因此在新主机上没有用。(尤其是表示(/proc/kcore
)中RAM的文件将添加不必要的数据量)。
但是,您还应该考虑对dd
发生故障的驱动器分区进行转储:
user@good_host$ cd good_partition; netcat -l -p 1234 > dump_of_bad_partition_1.dd
root@bad_host$ dd if=/dev/sda1 | netcat good_host.ip 1234
您必须采用/dev/sda1
正确的设备的地方。也可以对出现故障的驱动器上的其他分区执行此操作。
通过该转储,您可以确定不会错过任何tar
不会捕获的重要元数据(例如ACL)。
为什么要与排除目录结合使用?将同一设备安装到另一个目录不是更好的主意吗?现代内核允许这种方式。例如,您已经安装
/ dev / sda1 as /然后执行:mkdir / CLEANROOT挂载/ dev / sda1 / CLEANROOT
之后,您将:/ dev / sda1作为/ / dev / sda1作为/ CLEANROOT
这是在两个地方都可以看到的相同文件系统,但是/ CLEANROOT没有附加挂载。然后,您可以在没有任何排除的情况下进行tar或rsync / CLEANROOT,而复制/排除。
当然,当您拥有一些数据分区时,您必须复制另一个数据分区。
复制分区是服务器恢复的第一步。另一个是重新生成引导扇区,否则系统将不会从复制的磁盘引导。从安装/救援CD或pendrive引导时,救援模式很有用。
您是否可以物理访问发生故障的主机?
如果这样做,则从实时CD引导。然后使用:
tar --exclude='/dev'
。rsync -zvr --exclude /dev/ / destination_computer_name_or_ip
nc -l 4242 | gunzip | cat > my_full_disk_backup_of_PC_named_foo
dd if=/dev/sda of=- bs=1M | gzip | nc -p 4242 name_of_the_destination
如果无法从实时CD引导,则上述大多数解决方案将保持不变,但是:
tar --exclude='/dev' --exclude='/proc'
#mount /dev/sda1 /mnt/fedora
mount: unknown filesystem type 'LVM2_member'
这是有关如何使用tar
和复制文件的说明ssh
。基本上,根据要复制本地->远程还是远程->本地,您将运行以下操作之一:
tar cf - files... | ssh remotehost -c 'cd /destination && tar xvf -'
ssh remotehost -c 'cd /destination && tar cf - files' | tar xvf -
你应该考虑使用rsync
follwoing命令假设两件事:
rsync / new_partition:/wherever/you/want/
注意:尾部的/很重要,否则文件将最终位于上一级目录中
-a
参数(也许-A
),因为它保留了时间,所有权,符号链接(也许还有ACL)等以及-e ssh
参数,因为应该将数据传输到另一台计算机。所以rsync -aAv -e ssh root@failingharddrivehost:/ /good_computer/newpartition_mountpoint
ssh user@failingsys "tar cfz - /" > oldsys.tar.gz