我正在尝试将多个输入文件/流连接成一个流(使用虚构命令stream-cat
),将该流通过管道传输到ssh
远程主机并在远程主机上将其分离回单独的文件/流(stream-sep
),如本例所示,用于演示仅用于:
stream-cat <( zfs send tank/vm@snapshot ) somefile.txt | ssh user@host "stream-sep >( zfs receive tank/vm@snapshot ) somefile.txt"
示例说明:zfs send
输出大量数据,其大小事先未知(这就是tar
无法处理的原因)。该数据流与常规文件的内容连接在一起somefile.txt
。生成的流通过管道输送到ssh
,在那里再次分离。第一个流通过管道传输到zfs receive
,而第二个流写入常规文件。
这样的程序应该通过读取块中的不可搜索流并始终写入块大小后跟数据来实现,直到到达流的末尾。开销将是最小的。
这样的程序已经存在了吗?