Cのようにtar
を実行していますが、問題が発生しています。ファイルとディレクトリをアーカイブおよびアーカイブ解除したいので、次のコマンドを操作します:tar -cvf NAME.tar FILE1 [FILE2...]
今、私はこのアーカイブのヘッダーPOSIX
を取得しようとしています:
struct posix_header
{ /* byte offset */
char name[100]; /* 0 */
char mode[8]; /* 100 */
char uid[8]; /* 108 */
char gid[8]; /* 116 */
char size[12]; /* 124 */
char mtime[12]; /* 136 */
char chksum[8]; /* 148 */
char typeflag; /* 156 */
char linkname[100]; /* 157 */
char magic[6]; /* 257 */
char version[2]; /* 263 */
char uname[32]; /* 265 */
char gname[32]; /* 297 */
char devmajor[8]; /* 329 */
char devminor[8]; /* 337 */
char prefix[155]; /* 345 */
/* 500 */
};
int main()
{
struct posix_header header;
int fd;
if ((fd = open("./obj.tar", O_RDONLY)) < 2) //open tarball
return (1);
read(fd, &header, 500); //fill struct
printf("%s\n", header.name);
close(fd);
}
ただし、出力は常に./PaxHeaders.NUMBER/FILE_NAME
。エディターでアーカイブを開こうとすると、各ファイルの前にPaxHeaderが表示されます。
PaxHeaders
とは何ですか? Paxと完全に互換性があるようにヘッダーが追加されていますか?ある場合、それらを削除することは可能ですか?
私は少し迷っています、私はそれらを解析するか、これらのヘッダーの後にジャンプする必要がありますか?
どうもありがとう !
POSIX.1 2008は、pax形式と呼ばれるustar形式の拡張を定義しています。新しい機能は、拡張paxヘッダーに対してtypeflag
がx
に設定された特別なファイルを使用して導入されます(次のfile)またはグローバルpaxヘッダーの場合はg
(以降のすべてのファイルに影響します)。これらのヘッダーを使用すると、アーカイブプログラムは、アクセス時間や拡張長などの追加の属性をtarファイルに保存できます(従来のtarには大きすぎるファイルを保存するには)。
この回答のスペースは制限が多すぎて完全な仕様を複製できません。詳細については、 [〜#〜] posix [〜#〜] を参照してください。