通过网络从稀疏文件到块设备

通过网络从稀疏文件到块设备

如果我有一个代表块设备的稀疏文件,那么如何通过网络有效地恢复该文件?理想情况下,我会使用rsync -S host:file /dev/sdb,但rsync不会写入块设备。我正在使用ssh host dd if=file | dd of=/dev/sdb,但这效率不高,因为零字节将通过网络传输并写入设备。我可以使用tar -Scp --sparse=always以某种方式吗?我可以在不将文件存储在本地(即使是暂时的)的情况下执行此操作吗? sshfs 可以识别稀疏文件吗?

答案1

我还没有测试过,但是有一个write-devicesrsync 补丁可以解决你的问题。您可以在以下位置找到该补丁rsync 补丁存储库。

答案2

您可以安装iSCSI 企业目标软件并从稀疏文件设置 iSCSI LUN,如下所示:

在 /etc/iet/ietd.conf 中:

Target iqn.my.iscsi.test:disk1
        Lun 0 Path=/path/to/my/sparse_file,Type=fileio

然后从需要恢复的主机启动目标。由于目标将显示为本地设备(例如/dev/sdd),因此您可以dd从该设备连接到本地设备。

答案3

您是否尝试过压缩/解压缩飞行中的数据?零批次应该压缩良好。

其实,再想一想,也很简单。在远程主机上,创建一个带有mkfifo. scp/dd照常到该管道,然后cp --sparse=always从它到实际的目标文件。

在我的安装上进行了测试,它确实在输出中生成了一个稀疏文件。谢谢你提出了一个好问题!

相关内容