tarアーカイバーはファイルをゼロで埋めることができますか?

tarアーカイバーはファイルをゼロで埋めることができますか?

同僚からtarアーカイブを受け取り、解凍した後、いくつかのテキストファイルが破損していることがわかりました。より正確にはゼロで埋められます。サイズは正確ですが、すべてのバイトは0x00に等しくなります。

このような状況は、tarバージョンの一部の非互換性のためですか?ファイルに中国語の文字が含まれているか、圧縮中にファイルが破損していますか?コントロールチェックサムが良好なため、転送中の問題は予想されません。

ベストアンサー1

確かなみんなバイトは0x00?この場合、ファイルにはサイズ以外の情報は含まれません。どのプログラムも情報をすべてゼロとして保存または転送できません(テレパシー以外の場合)。

できるファイルにテキストとゼロバイトが交互に含まれる場合が発生します。意味:UTF-16(または同様の値)でエンコードされたUnicodeテキストを含むファイルを受け取りました。各文字は16ビット(2バイト)を占めます。 Unicodeは、ASCII文字コードに英語の文字と記号を割り当てます。つまり、たとえば、文字はAASCIIでは16進数41、Unicodeでは00 41です。その結果、「Hello」をUTF-16として作成し、それを8ビットテキストとして読み取ると、次のようになります。

\0 H \0 e \0 l \0 l \0 o

もしそうなら、それはあなたのせいではありませんtar。ただし、チェックサムチェックですべてゼロのファイルを受け取った場合、作成者に問題があることは明らかです。バージョンの問題ではありませんが、誰が知っていますか?ジェネレータがすべてゼロを読み取るハードウェアの問題がある可能性があります。

(もちろんファイルが正しくアーカイブされ、プログラムにバグが存在する場合もあります。作られたアーカイブファイル)。

おすすめ記事