我使用BitTorrent,有时会遇到没有种子的文件(丢失的部分)
那时,我们有时强制文件传输结束并尝试打开未完成的文件(例如,图像文件)。
如果幸运的话,即使某些部分丢失,也可以看到下载的图像。
我想人为地重现这种情况,以及我的尝试方式:
1)通过Linux split命令将大约1兆字节的bmp映像文件拆分为16千字节
2)然后将其中一个分割文件设为0千字节
3)之后,使用cat命令重新加入所有文件。
然而,在这种情况下,不像洪流"丢失的碎片"情况,文件完全腐败,无法读取
从理论上讲,这看起来并不特别,但是错在哪里?我怎样才能达到我的目的?
我很感激你的帮助。
答案 0 :(得分:2)
使用dd
:
dd if=/dev/zero of=image.jpg bs=1 conv=notrunc seek=X count=Y
要删除的文件中的X
偏移量和Y
字节数。
关于腐败,取决于文件类型,丢失的部分以及用于阅读的程序。
例如,JPG文件使用可变比特长度编码,这意味着只丢失一个比特可能会破坏该点上的所有文件。但就此而言,可能存在重置比特流的 resyncronization 点,因此从那时起,该文件看起来还不错。但是在编写文件时,这些重新同步点是可选的,并且在发生损坏的情况下并非每个读者都会尊重它们......
无论如何,丢失部分标题会使文件完全无法读取。