tar コマンドビルダー
フラグを調べなくても tar アーカイブの作成・展開・一覧表示ができます。
このツールについて
アーカイブの作成・展開・一覧表示を選び、圧縮形式(gzip、bzip2、xz、zstd)を指定し、ファイルと除外対象を追加して、すべてのフラグの説明付きで tar コマンドをコピーできます。
使い方
- 「作成」「展開」「内容を一覧」から選びます。
- 圧縮形式を選びます。アーカイブ名には対応する拡張子が付きます。
- 新しいアーカイブの場合は、含めるファイルやフォルダーと、除外するパターンを列挙します。
- コマンドをコピーし、各フラグの意味を確認します。
よくある質問
- .tar.gz ファイルを展開するには?
- tar -xzvf file.tar.gz を実行します。別の場所に展開するには -C folder を追加します。最近の GNU tar や macOS の tar は圧縮形式を自動で判別するため、tar -xvf file.tar.gz でも展開できます。
- どの圧縮形式を選べばよいですか?
- gzip はどこでも開ける安全なデフォルトです。zstd は通常、より高速でサイズも小さくなりますが、ファイルを開くすべてのマシンに新しい tar が必要です。xz は最もサイズが小さくなりますが、最も低速です。
- -czvf で -f を最後に置かなければならないのはなぜですか?
- f は次の単語をアーカイブ名として受け取ります。-czfv では、tar は v をファイル名として扱ってしまいます。f は文字のまとまりの最後に置いてください。
- --strip-components は何をしますか?
- 展開時にすべてのパスから先頭のフォルダーを取り除きます。アーカイブには project-1.2/ のような最上位フォルダーが含まれていることが多く、--strip-components=1 を使うとその中身が直接展開先に置かれます。
- 展開せずに中身を確認するには?
- 「内容を一覧」を使うと tar -tvf archive.tar.gz になります。各ファイルのサイズと日付を表示するだけで、何も変更しません。
- 既存の tar.gz にファイルを追加するには?
- 圧縮されたアーカイブには追加できません。tar -rf でファイルを追加できるのは、圧縮されていない .tar だけです。.tar.gz の場合は、追加するファイルを含めてアーカイブを作り直すか、gunzip で解凍し、tar -rf backup.tar newfile を実行してから、gzip で再び圧縮してください。
- tar で「Not found in archive」と表示されるのはなぜですか?
- 指定したパスがメンバー名と完全に一致していません。tar -tzf archive.tar.gz を実行して、その出力からパスをコピーしてください。tar -czf x.tar.gz . で作成したアーカイブはすべての名前の先頭に ./ が付いており、最上位のフォルダーがあるアーカイブも多くあります。また、GNU tar でパターンを使うには --wildcards が必要です。
- macOS で tar アーカイブに ._ ファイルが追加されないようにするには?
- macOS の tar(bsdtar)は拡張属性を追加の ._ ファイルとして保存するため、Linux では不要なファイルとして表示されます。--no-mac-metadata を付けてアーカイブを作成するか、コマンドの前に COPYFILE_DISABLE=1 を設定してください。例: COPYFILE_DISABLE=1 tar -czf backup.tar.gz project。Linux や GNU tar では何も変わりません。
フォルダーの tar.gz アーカイブを作成する方法
tar -czvf backup.tar.gz src docs package.json を実行すると、指定したファイルとフォルダーがまとめられます。パスは入力したとおりに保存されるため、相対パスを使ってください。上位のパスを含めずにフォルダーを保存するには、先に -C でディレクトリを移動します。例: tar -czf site.tar.gz -C /var/www html。GNU tar と bsdtar は絶対パスの先頭の / を取り除くため、展開時にアーカイブがシステムファイルを上書きすることはありません。
除外するには --exclude=node_modules や --exclude="*.log" を追加し、シェルが展開しないようにパターンをクォートしてください。スラッシュを含まないパターンは、どの階層にあるその名前にもマッチします。GNU tar では、--exclude オプションは後に指定したファイルにしか適用されないため、ファイルのリストより前に置いてください。tar がアーカイブ自身をアーカイブに含めようとしないよう、アーカイブはまとめるフォルダーの外に書き出してください。
tar.gz と zip の違い: どちらのアーカイブ形式を使うべき?
tar は Unix のパーミッション、所有者、シンボリックリンクを保持するため、スクリプトやデプロイで重要になります。すべてのファイルを 1 つのストリームとして圧縮するので、似た小さなファイルが多い場合は zip より小さくなります。その代わりランダムアクセスができず、1 つのファイルを一覧表示したり展開したりするにもアーカイブ全体を読み進める必要があります。zip は各ファイルを個別に圧縮し、Windows で標準で開けますが、Windows 10 以降には tar も搭載されています。
.tgz は .tar.gz の短い名前にすぎず、中身はまったく同じです。.tar.bz2 と .tar.xz は速度と引き換えにファイルを小さくし、.tar.zst は速くて小さいものの、GNU tar 1.31 以降か最近の bsdtar で --zstd フラグを使う必要があります。GNU tar と bsdtar はどちらも -a も受け付け、作成時にアーカイブのファイル拡張子から圧縮形式を選びます。
tar アーカイブから 1 つのファイルだけを展開する方法
アーカイブの後にファイル名を指定します。例: tar -xzf backup.tar.gz src/config.yml。パスは、先頭の ./ や最上位のフォルダーも含め、tar -tzf backup.tar.gz の出力と完全に一致している必要があります。GNU tar で "*.yml" のようなパターンを使うには --wildcards が必要ですが、macOS の bsdtar ではそのまま使えます。ファイルを書き出す代わりにターミナルに出力するには、-O を追加します。例: tar -xzOf backup.tar.gz src/config.yml。
他人から受け取ったアーカイブを展開する前に、中身を一覧表示しましょう。最上位のフォルダーがなく、何百ものファイルを現在のフォルダーにばらまくアーカイブもあり、同じ名前の既存ファイルは確認なしで上書きされます。代わりに新しい空のフォルダーに展開してください。mkdir out を実行してから tar -xzf archive.tar.gz -C out を実行します。ダウンロードしたファイルを事前に確認するには、ハッシュ生成ツールか sha256sum で SHA-256 を比較します。
うまく動かない、または結果がおかしいですか? このツールの問題を報告