从标准输入管道刻录目录结构

从标准输入管道刻录目录结构

我正在尝试做一些棘手的事情,我想将目录结构从管道流刻录到 CD 上。原因是它来自网络,我不想将它写入CD刻录机的硬盘上。

我不确定如何(或者如果可能的话)将 tar 的输出(例如)传输到 genisoimage 或 mkisofs 中。我注意到 genisoimage 中有一个流选项,但是当我尝试这样做时

tar -cvf - /home/myuser | genisoimage --stream-media-size 200 -o test.iso

我只得到了一个 test.iso,其中包含一个stream.img(如 genisoimage(1) 中指定的),它本身就是原始的 tar 存档。这是不行的,它需要是CD上的目录结构。

我知道cdrskin(用于刻录的cli工具)可以从stdin获取数据并刻录它。

那么我如何将数据传输到 genisoimage,让它为 ISO 创建该数据的目录结构,然后将该数据传输回 cdrskin 进行刻录?我还知道 genisoimage 默认将 iso 数据通过管道传输到 stdout,因此我唯一的问题似乎是将目录结构流通过管道传输到 genisoimage 并在 ISO 数据中维护该目录结构。

这篇文章中的标签很糟糕,因为我找不到 genisoimage、cdrskin,甚至找不到 stdin。

编辑:这与数据安全无关,而是与磁盘空间不足有关。我不在乎数据是否缓冲在 HDD 上,但我无法写入完整的 ISO。当然 genisoimage 只是一个建议,我愿意接受任何其他创建 ISO 数据的方法。供您参考,它适用于蓝光光盘。

答案1

我猜你不只是指定磁盘上的目录的原因是因为你正在通过网络传输它。我还假设您为此使用 ssh,所以我的问题是:为什么不使用 sshfs?

答案2

我不想把它写在CD刻录机的硬盘上。

阻止这种情况几乎是不可能的。甚至 stdio 管道也可以写入磁盘。即使您完全避免使用管道(例如通过写入共享内存段),它仍然可能会被分页。

在没有任何缓冲的情况下,即使网络很快且写入速度很慢,您也可能会遇到超载/欠载问题。

只需复制文件然后将其粉碎 - 或在源/缓冲区文件系统上使用加密

相关内容