github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/archive/tar/format.go (about) 1 // Copyright 2016 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package tar 6 7 // Formatはtarアーカイブのフォーマットを表します。 8 // 9 // オリジナルのtarフォーマットはUnix V7で導入されました。 10 // その後、V7フォーマットの制限を克服するために標準化または拡張を試みる複数の競合するフォーマットがありました。 11 // 最も一般的なフォーマットは、USTAR、PAX、GNUフォーマットで、それぞれ独自の利点と制限があります。 12 // 13 // 次の表は、各フォーマットの機能を示しています: 14 // 15 // | USTAR | PAX | GNU 16 // ------------------+--------+-----------+---------- 17 // Name | 256B | unlimited | unlimited 18 // Linkname | 100B | unlimited | unlimited 19 // Size | uint33 | unlimited | uint89 20 // Mode | uint21 | uint21 | uint57 21 // Uid/Gid | uint21 | unlimited | uint57 22 // Uname/Gname | 32B | unlimited | 32B 23 // ModTime | uint33 | unlimited | int89 24 // AccessTime | n/a | unlimited | int89 25 // ChangeTime | n/a | unlimited | int89 26 // Devmajor/Devminor | uint21 | uint21 | uint57 27 // ------------------+--------+-----------+---------- 28 // string encoding | ASCII | UTF-8 | binary 29 // sub-second times | no | yes | no 30 // sparse files | no | yes | yes 31 // 32 // この表の上部は、 [Header] フィールドを示しており、各フォーマットが各文字列フィールドに許可される最大バイト数と、 33 // 各数値フィールドを格納するために使用される整数型を報告します 34 // (タイムスタンプは、Unixエポックからの秒数として格納されます)。 35 // 36 // 表の下部は、各フォーマットの特殊な機能を示しています。 37 // たとえば、サポートされる文字列エンコーディング、サブセカンドタイムスタンプのサポート、スパースファイルのサポートなどがあります。 38 // 39 // Writerは現在、スパースファイルに対するサポートを提供していません。 40 type Format int 41 42 // Constants to identify various tar formats. 43 const ( 44 // Deliberately hide the meaning of constants from public API. 45 _ Format = (1 << iota) / 4 46 47 // FormatUnknownは、フォーマットが不明であることを示します。 48 FormatUnknown 49 50 // FormatUSTARは、POSIX.1-1988で定義されたUSTARヘッダーフォーマットを表します。 51 // 52 // このフォーマットは、ほとんどのtarリーダーと互換性がありますが、 53 // このフォーマットにはいくつかの制限があるため、一部の用途には適していません。 54 // 特に、スパースファイル、8GiBを超えるファイル、256文字を超えるファイル名、および非ASCIIファイル名をサポートできません。 55 // 56 // 参考: 57 // http://pubs.opengroup.org/onlinepubs/9699919799/utilities/pax.html#tag_20_92_13_06 58 FormatUSTAR 59 60 // FormatPAXは、POSIX.1-2001で定義されたPAXヘッダーフォーマットを表します。 61 // 62 // PAXは、Typeflag TypeXHeaderを持つ特別なファイルを書き込むことで、USTARを拡張します。 63 // このファイルには、USTARの制限を克服するために使用される一連のキー-値レコードが含まれています。 64 // さらに、タイムスタンプのサブセカンド解像度を提供する機能もあります。 65 // 66 // 一部の新しいフォーマットは、独自のキーを定義し、関連する値に特定の意味を割り当てることで、PAXに独自の拡張機能を追加します。 67 // たとえば、PAXでのスパースファイルのサポートは、GNUマニュアルで定義されたキー(例:「GNU.sparse.map」)を使用して実装されています。 68 // 69 // 参考: 70 // http://pubs.opengroup.org/onlinepubs/009695399/utilities/pax.html 71 FormatPAX 72 73 // FormatGNUは、GNUヘッダーフォーマットを表します。 74 // 75 // GNUヘッダーフォーマットは、USTARおよびPAX規格よりも古く、 76 // それらとの互換性はありません。 77 // GNUフォーマットは、任意のファイルサイズ、任意のエンコーディングと長さのファイル名、スパースファイルなどをサポートします。 78 // 79 // GNUフォーマットのアーカイブの解析ができるアプリケーションしかない場合を除き、PAXをGNUよりも選択することが推奨されます。 80 // 81 // 参考: 82 // https://www.gnu.org/software/tar/manual/html_node/Standard.html 83 FormatGNU 84 ) 85 86 func (f Format) String() string