tarコマンド早見表|圧縮・展開・除外・バックアップまで迷わない実践ガイド
まず使えるtarコマンド早見表
この記事では、コマンドをただ並べるだけでなく、どの場面でどの形を選ぶべきかも合わせて整理します。
初心者はまず表の基本形を使い、慣れてきたら除外指定や展開先指定を足していくと無理なく覚えられます。
記事全体では、コマンド例を見て終わりにせず、展開前確認、除外、権限、圧縮形式の選択まで順番に判断できるようにしています。
tarコマンドで迷ったときは、最初に「作成する」「展開する」「中身を見る」のどれをしたいのかを分けると判断しやすくなります。
よく使う形は次の3つで、Linuxサーバーのバックアップやログ保管ではこの組み合わせだけでもかなりの場面に対応できます。
最初からすべてのオプションを覚える必要はなく、作業目的に合う型を選んでから、展開先や除外条件を追加していく考え方が安全です。
tar.gzを作成する基本形
tar.gzを作るときは、まとめたいディレクトリやファイルを指定して、出力するアーカイブ名を先に決めます。
コマンドの後半にある対象パスを間違えると、必要なファイルが入らなかったり、想定より大きなアーカイブになったりします。
保存名と対象パスを逆に読まないように、実行前に左から順番に意味を確認するとミスを防ぎやすくなります。
バックアップ用途では、作成後に`tar -tf`で中身を確認してから保管や転送を行うと安心です。
| 目的 | コマンド例 | 使う場面 |
|---|---|---|
| ディレクトリをtar.gzにする | `tar -czvf backup.tar.gz ./app` | アプリや設定ファイルをまとめる |
| 複数ファイルをtar.gzにする | `tar -czvf logs.tar.gz access.log error.log` | ログをまとめて保管する |
| 処理中のファイル名を表示しない | `tar -czf backup.tar.gz ./app` | cronなどで出力を減らす |
tar.gzを展開する基本形
tar.gzを展開するときは、まず展開先を決めてから実行すると、意図しない場所にファイルが散らばる失敗を防ぎやすくなります。
作成者が自分でないアーカイブは、中にトップディレクトリが含まれていないこともあるため、いきなり現在の場所へ展開しない方が安全です。
復元作業では、作業用ディレクトリに一度展開してから、必要なファイルだけを本来の場所へ移す流れにすると失敗を減らせます。
| 目的 | コマンド例 | 使う場面 |
|---|---|---|
| 現在の場所に展開する | `tar -xzvf backup.tar.gz` | 中身の構成が分かっている場合 |
| 指定ディレクトリに展開する | `tar -xzvf backup.tar.gz -C ./restore` | 復元先を分けたい場合 |
| 表示を抑えて展開する | `tar -xzf backup.tar.gz -C ./restore` | 自動処理でログを減らしたい場合 |
展開せずに中身を確認する基本形
他人から受け取ったアーカイブや作成元が分からないアーカイブは、展開する前に中身を確認すると安全です。
一覧確認をしておくと、ファイルが直下に大量展開されるのか、1つのディレクトリ配下にまとまっているのかを事前に判断できます。
本番環境や共有サーバーでは、展開前の確認を1手順として入れておく方が、復旧や片付けにかかる時間を減らせます。
| 目的 | コマンド例 | 使う場面 |
|---|---|---|
| 中身の一覧を見る | `tar -tzvf backup.tar.gz` | 展開前に階層を確認する |
| ファイル名だけ確認する | `tar -tf backup.tar.gz` | ざっくり構成を見る |
| 特定名を探す | `tar -tf backup.tar.gz | grep conf` | 設定ファイルだけ探す |
tarコマンドの基本構文とオプションの読み方
tarは一度に多くのことができるため、最初は難しく感じます。
ただし、普段の操作では作成、展開、一覧確認の3つを押さえれば十分な場面が多いです。
しかし実際の作業では、よく使うオプションはかなり限られます。
tarはオプションの数が多く見えますが、基本は「何をするか」「どのファイル名で扱うか」「圧縮するか」を組み合わせるだけです。
最初にこの考え方を押さえると、tar -czvfのような並びも暗号のように見えにくくなります。
よく使うコマンドは短い文字の組み合わせに見えますが、1文字ずつ意味を分解すると、作成、展開、一覧確認のどれをしているのかが分かります。
tarは「まとめる」と「圧縮」を分けて考える
tarは本来、複数のファイルやディレクトリを1つのアーカイブにまとめるためのコマンドです。
gzipやxzなどの圧縮は、tarで作ったアーカイブに圧縮処理を組み合わせていると考えると分かりやすくなります。
そのため、拡張子が.tarだけなら基本的にはアーカイブで、.tar.gzや.tgzならtarアーカイブをgzipで圧縮したものです。
この違いを理解しておくと、`.tar`を展開するのに`z`を付けない理由や、`.tar.xz`で`J`を使う理由も自然に理解できます。
c・x・t・v・f・zの意味
tarで特によく使う文字は、動作を決めるc、x、tと、補助的に使うv、f、zです。
cはcreate、xはextract、tはtableやlistのように覚えると、作成、展開、一覧確認を取り違えにくくなります。
vは必須ではありませんが、初心者のうちは処理中のファイルが見えるため、何が起きているかを確認しやすくなります。
| オプション | 意味 | よく使う場面 |
|---|---|---|
| c | 作成する | アーカイブを新しく作る |
| x | 展開する | アーカイブから取り出す |
| t | 一覧を見る | 展開せずに中身を確認する |
| v | 詳細表示する | 処理中のファイル名を見る |
| f | ファイル名を指定する | アーカイブ名を指定する |
| z | gzipを使う | tar.gzを扱う |
-czvfのような連結オプションの考え方
tar -czvf backup.tar.gz ./appは、作成するc、gzipを使うz、詳細表示するv、ファイル名を指定するfをまとめて書いた形です。
重要なのは、fを使う場合はその直後にアーカイブ名が来るという点です。
たとえばtar -czvf backup.tar.gz ./appでは、backup.tar.gzが作成されるファイル名で、./appがアーカイブに入れる対象です。
この並びを逆にしてしまうと、tarがアーカイブ名と対象を正しく解釈できず、意図しないエラーや空のアーカイブにつながることがあります。
オプションを連結して書くのが不安な場合は、`tar -c -z -v -f backup.tar.gz ./app`のように分けて考えると理解しやすくなります。
圧縮・展開・一覧確認の使い分け
とくに本番環境では、作成と展開を間違えるだけで大きな事故につながることがあります。
作業の前後で`pwd`、`ls`、`tar -tf`を確認するだけでも、誤操作をかなり減らせます。
短いコマンドほど確認を省きがちなので、実行前に対象ファイル名と動作モードを見直す習慣が大切です。
tarでの失敗は、作るつもりなのに展開してしまうなど、動作モードを取り違えるところから起きやすいです。
まずc、x、tのどれを使うかを決めてから、圧縮形式や表示方法を足すと安全です。
作業前に「新しいアーカイブを作るのか」「既存のアーカイブを取り出すのか」「中身だけを見るのか」を声に出すくらいの感覚で確認すると、誤操作を避けやすくなります。
アーカイブを作るときの考え方
アーカイブを作るときはcを使い、出力するファイル名と対象をセットで指定します。
基本形はtar -czvf 保存名.tar.gz 対象ディレクトリです。
バックアップ用途では、backup-20260622.tar.gzのように日付を入れておくと、あとで世代管理しやすくなります。
複数世代を残す場合は、日付だけでなくサービス名や環境名も入れておくと、復元時に目的のファイルを見つけやすくなります。
作成後はファイルサイズだけで判断せず、`tar -tf`で必要なディレクトリや設定ファイルが含まれているかを確認します。
この確認を入れるだけで、復元時に必要ファイルが入っていなかったという失敗を避けやすくなります。
展開するときに確認すること
展開するときはxを使いますが、実行前に展開先と中身の階層を確認するのが安全です。
特にカレントディレクトリに大量のファイルが出るアーカイブでは、あとから整理する手間が大きくなります。
不安な場合はmkdir restoreで空のディレクトリを作り、tar -xzvf backup.tar.gz -C restoreのように展開先を分けます。
上書きが心配な場合も、まず別ディレクトリへ展開して差分を確認してから移動する方が安全です。
本番環境での復元では、展開だけでなく、サービス停止の有無や展開後の権限確認まで手順に入れておくと安心です。
中身だけ見たいときの使い方
中身だけを見たいときはtを使い、展開せずにファイル一覧を確認します。
tar -tf backup.tar.gzで一覧だけを見れば、トップにディレクトリがあるのか、ファイルが直下に並ぶのかを事前に確認できます。
本番サーバーで復元する前や、受け取ったアーカイブを開く前は、この確認を習慣にすると安心です。
一覧が長い場合は`grep`や`less`と組み合わせると、必要なファイルだけを探しやすくなります。
たとえば設定ファイルを探すときは、`tar -tf backup.tar.gz | grep config`のように確認してから、必要なパスだけ展開します。
展開先とアーカイブ対象で失敗しない方法
tarの結果が思った形にならないときは、オプションよりも現在の作業場所が原因になっていることも多いです。
`pwd`で現在地を確認し、`ls`で対象ディレクトリを確認してから実行すると基本的なミスを減らせます。
tarは便利な反面、どの場所を基準にまとめたか、どこに展開するかで結果の見え方が大きく変わります。
ファイルが散らばったり、想定外の階層になったりする場合は、展開先と対象パスの指定を見直すのが近道です。
特に復元や移行では、コマンド自体が正しくても、作業ディレクトリの違いだけで結果が大きく変わります。
-Cで展開先を指定する
展開先を明示したい場合は、-Cのあとにディレクトリを指定します。
例としてtar -xzvf backup.tar.gz -C ./restoreを使うと、backup.tar.gzの中身をrestoreディレクトリ配下へ展開できます。
このときrestoreディレクトリが存在しないと失敗するため、必要に応じて事前にmkdir -p ./restoreを実行します。
`-C`は展開時だけでなく、作成時に基準ディレクトリを変える目的でも使われることがあります。
作成時の`-C`は便利ですが、慣れないうちは対象がどのパスでアーカイブに入るのかを`tar -tf`で必ず確認します。
相対パスで安全にアーカイブを作る
アーカイブを作るときは、絶対パスより相対パスを使う方が扱いやすい場面が多いです。
たとえばtar -czvf app.tar.gz ./appのように作ると、展開時に現在の場所を基準にappディレクトリが復元されます。
一方でルートからの絶対パスを含めると、復元時に意図しない階層を再現しようとして混乱しやすくなります。
tarは絶対パスを安全のために調整して扱うことがありますが、環境や実装によって見え方が違う場合があります。
移行先での扱いやすさを重視するなら、バックアップ元の親ディレクトリに移動してから相対パスで固める方法が分かりやすいです。
ディレクトリごと固める場合と中身だけ固める場合
ディレクトリごと固めたい場合は、tar -czvf app.tar.gz ./appのように対象ディレクトリを指定します。
中身だけを固めたい場合は、対象ディレクトリへ移動してからtar -czvf ../app-files.tar.gz .のように実行します。
どちらが正しいかは、展開したときにトップディレクトリを作りたいかどうかで判断します。
配布用のアーカイブではトップディレクトリがある方が親切ですが、既存ディレクトリへ上書き配置する用途では中身だけの方が便利な場合があります。
迷う場合は、試しに小さなディレクトリで作成してから`tar -tf`で見え方を確認すると、展開後の状態を予測しやすくなります。
除外指定と一部だけ展開する実用パターン
除外指定はバックアップサイズを小さくするだけでなく、復元後の不要なトラブルを減らすためにも重要です。
特にアプリケーションのディレクトリでは、キャッシュや依存パッケージが容量の大部分を占めることがあります。
ただし除外しすぎると必要なファイルまで抜けるため、初回は小さな対象で試してから本番に使うと安全です。
バックアップや転送では、すべてを含めるよりも不要なものを除外した方が実用的なことがあります。
キャッシュ、ログ、依存パッケージ、Git管理情報を含めると、アーカイブが大きくなったり復元先で不要な差分が増えたりします。
除外指定はサイズ削減だけでなく、復元先へ持ち込みたくない一時ファイルや環境依存ファイルを避ける目的でも役立ちます。
–excludeで不要なファイルを除外する
単発で除外したい場合は、–excludeを使います。
たとえばtar -czvf app.tar.gz ./app –exclude=”./app/cache” –exclude=”./app/node_modules”のように指定できます。
除外パターンは指定する対象パスとの関係で効き方が変わるため、うまく除外できないときはtar -tfで作成後の中身を確認します。
`–exclude`は書き方が少し違うだけで効かないことがあるため、対象ディレクトリの指定と除外パターンの先頭をそろえるのが大切です。
除外したつもりのディレクトリが含まれているとバックアップサイズが大きくなるため、初回は必ず一覧確認を行います。
–exclude-fromで除外リストを使う
除外対象が多い場合は、–exclude-fromで除外リストを読み込むと管理しやすくなります。
たとえばexclude.txtに./app/cacheや./app/node_modulesを1行ずつ書き、tar -czvf app.tar.gz ./app –exclude-from=exclude.txtのように実行します。
バックアップ対象が増える運用では、除外条件をコマンドに直接書くよりもリスト化した方が見直しやすくなります。
除外リストをGit管理しておくと、チームで同じバックアップ条件を共有しやすくなります。
ただし本番サーバー固有の秘密情報や一時ファイルを除外する場合は、リストの内容を不用意に公開しないように注意します。
特定ファイルだけを取り出す
アーカイブ全体を展開せず、特定ファイルだけ取り出したい場合もあります。
まずtar -tf backup.tar.gzで中のパスを確認し、必要なパスを指定してtar -xzvf backup.tar.gz app/config/settings.ymlのように展開します。
パスが少しでも違うと取り出せないため、一覧表示で確認した文字列をそのまま使うのが安全です。
設定ファイルを1つだけ戻したい場合や、古いログの一部だけ確認したい場合は、この方法が便利です。
ただし取り出し先に同名ファイルがある場合は上書きに注意し、必要に応じて作業用ディレクトリへ展開します。
バックアップで使うtarの実例
実務では、バックアップファイルを作ることよりも、必要なときに戻せる状態で残すことが重要です。
そのため、作成コマンド、保存先、世代管理、復元確認を1つの流れとして考えます。
tarはLinuxサーバーのバックアップでよく使われますが、ただ圧縮できればよいわけではありません。
復元できる形になっているか、不要ファイルを含めすぎていないか、権限や容量に問題がないかも一緒に確認する必要があります。
バックアップは作成した時点で終わりではなく、復元テストまで含めて初めて安心できる作業です。
特に障害対応では、バックアップが存在することよりも、必要なファイルを短時間で取り出せることの方が重要になります。
そのため、バックアップ名、保存場所、除外条件、復元手順をメモとして残しておくと、担当者が変わっても対応しやすくなります。
日付付きファイル名でバックアップする
日付付きのファイル名にすると、いつ作ったバックアップなのかがすぐ分かります。
例としてtar -czvf app-20260622.tar.gz ./appのようにすれば、対象と作成日をファイル名から判断できます。
シェルで自動化する場合は、dateコマンドを使ってbackup-$(date +%Y%m%d).tar.gzのように日付を組み込む方法もあります。
日次バックアップなら日付だけで十分なこともありますが、1日に複数回作成する場合は時刻まで含めると上書きを防げます。
保存先の容量を圧迫しないように、古い世代を削除するルールも合わせて決めておくと運用しやすくなります。
設定ファイルやログをまとめる
設定ファイルはサイズが小さくても、復旧時の重要度が高いことがあります。
たとえばtar -czvf config-backup.tar.gz ./nginx ./php ./mysql-confのように、関連する設定をまとめておくと移行時に確認しやすくなります。
ログを保管する場合は、古いログだけを対象にする、不要な一時ファイルを除外するなど、容量を増やしすぎない工夫も必要です。
設定ファイルのバックアップでは、認証情報や秘密鍵が含まれていないかを確認してから保管場所を決めます。
ログのバックアップでは、個人情報やアクセス元情報を含む可能性もあるため、保存期間とアクセス権限も意識します。
cronで自動化するときの注意点
cronでtarを実行する場合は、相対パスより絶対パスや作業ディレクトリの明示を意識します。
手動では成功するのにcronでは失敗する場合、実行ユーザー、PATH、保存先ディレクトリの権限、ディスク容量を確認します。
また、毎回同じ名前で保存すると上書きされるため、日付や世代番号を含める方が安全です。
cronでは画面にエラーが出ないことが多いため、ログファイルへ標準出力と標準エラーを残す設定も重要です。
バックアップが成功したかどうかを確認するために、作成後のファイルサイズや終了コードをチェックする仕組みを入れると安心です。
圧縮形式の選び方
圧縮形式は、あとから展開する人や復元する環境にも影響します。
自分の環境では問題なくても、移動先で対応していない形式を選ぶと復元時に手間が増えます。
tarではgzip、bzip2、xz、zstdなど複数の圧縮形式を組み合わせられます。
どれが絶対に正しいというより、速度、圧縮率、互換性のどれを優先するかで選びます。
個人の検証環境と本番サーバーではCPU性能やストレージ速度が違うため、重要な運用では小さな対象で試してから採用するのが現実的です。
また、圧縮にかかる時間だけでなく、展開にかかる時間、転送にかかる時間、復元先で使えるコマンドもまとめて考える必要があります。
圧縮率だけを見て選ぶと、緊急時の復元が遅くなることがあるため、運用目的に合わせたバランスが大切です。
gzip・bzip2・xz・zstdの違い
一般的には、gzipは互換性と速度のバランスがよく、xzは圧縮率を重視したい場面で選ばれます。
bzip2はgzipより圧縮率を期待できることがありますが、近年は用途によってxzやzstdと比較して選ぶことが増えています。
zstdは対応環境であれば速度と圧縮率のバランスがよく、大きなデータを素早く扱いたい場面で候補になります。
圧縮形式を変えると拡張子も変わるため、作成した人だけでなく展開する人にも分かりやすい名前にしておくことが大切です。
| 形式 | よく使う拡張子 | tarオプション例 | 向いている場面 |
|---|---|---|---|
| gzip | .tar.gz / .tgz | -z | 互換性を重視するバックアップ |
| bzip2 | .tar.bz2 | -j | gzipより圧縮率を意識したい場合 |
| xz | .tar.xz | -J | サイズを小さくしたい配布物 |
| zstd | .tar.zst | –zstd | 速度と圧縮率のバランスを取りたい場合 |
速さを重視する場合
速さを重視するなら、gzipやzstdが候補になります。
とくにバックアップを短時間で終わらせたい場合や、CIやcronで処理時間を抑えたい場合は、圧縮率だけでなく実行時間も見ます。
ただしzstdは環境によっては標準で使えないことがあるため、移動先や復元先でも使えるかを確認しておきます。
短時間で終わることが大切な夜間バッチやデプロイ前バックアップでは、多少サイズが大きくても速い形式の方が運用に合うことがあります。
圧縮に時間がかかりすぎると、バックアップ中にファイルが更新されるリスクや、サーバー負荷が長く続くリスクも増えます。
圧縮率を重視する場合
圧縮率を重視する場合は、xzが候補になります。
ただしxzはCPU負荷や処理時間が大きくなりやすいため、本番サーバーで大容量ファイルを圧縮する場合は実行タイミングに注意します。
サイズを小さくしたい配布物には向きますが、毎日何度も回すバックアップでは重すぎることがあります。
アーカイブを長期間保存する場合や、ネットワーク転送量をできるだけ減らしたい場合は、圧縮率の高い形式が役立ちます。
一方で、復元時にも展開時間がかかるため、緊急復旧を優先するバックアップでは圧縮率だけで選ばない方が安全です。
互換性を重視する場合
互換性を重視するなら、tar.gzが無難です。
Linuxサーバー、レンタルサーバー、古い環境、チーム内の共有などでは、相手の環境で展開できることが重要になります。
迷ったらtar.gzを選び、速度やサイズに不満があるときだけ別形式を検討する流れにすると判断しやすくなります。
特に外部へ渡すファイルや、復元先がまだ決まっていないバックアップでは、特殊な形式より一般的な形式の方が扱いやすくなります。
運用メモやREADMEに展開コマンドを書いておくと、あとから作業する人も迷いにくくなります。
大容量ファイルと進捗表示の扱い
大容量処理では、コマンドの正しさだけでなく、途中で止まったときにどう確認するかも大切です。
処理前に別ターミナルで容量やプロセスを確認できるようにしておくと、状況判断がしやすくなります。
大容量のアーカイブを扱うと、処理が止まっているのか、単に時間がかかっているのか分かりにくいことがあります。
進捗表示や分割保存を組み合わせると、長時間処理の不安を減らせます。
大きなファイルを扱う前には、保存先の空き容量、対象データの総量、圧縮後の転送先容量を確認しておくと途中失敗を防ぎやすくなります。
ネットワーク越しに転送する場合は、圧縮中の負荷だけでなく、転送中に失敗したときの再実行方法も考えておくと安心です。
verboseで処理中のファイルを表示する
vオプションを付けると、処理中のファイル名が表示されます。
tar -czvf backup.tar.gz ./appのように実行すれば、どのファイルを処理しているかが画面に流れます。
ただしファイル数が非常に多い場合は出力が多くなり、ログが読みにくくなることがあります。
手動実行ではvを付けると安心ですが、自動実行ではログが膨らむ原因になるため、必要に応じて外す判断も必要です。
処理対象が多すぎる場合は、vの出力よりも終了コードや作成後のファイルサイズを確認した方が実用的なことがあります。
checkpointで進捗を確認する
処理件数の区切りで進捗を出したい場合は、checkpoint系のオプションを使う方法があります。
例としてtar -czf backup.tar.gz ./app –checkpoint=1000 –checkpoint-action=dotのようにすると、一定間隔で印が表示されます。
環境によって使えるオプションに差があるため、うまく動かない場合はman tarやtar –helpで確認します。
checkpointは細かな進捗率を出すものではありませんが、処理が進んでいるかどうかを確認する用途には役立ちます。
長時間処理では、別ターミナルで出力ファイルのサイズが増えているかを確認する方法もあります。
pvやsplitと組み合わせる
進捗バーを見たい場合は、pvコマンドと組み合わせる方法があります。
また、巨大なアーカイブを分割したい場合は、tarで出力したデータをsplitに渡して一定サイズごとに分けられます。
分割したアーカイブは、復元時にcatで結合してからtarで展開する流れになるため、分割ファイルをすべてそろえて保管します。
分割ファイルの一部が欠けると復元できないため、転送後はファイル数やチェックサムを確認しておくと安全です。
クラウドや外部ストレージへ保存する場合は、1ファイルあたりのサイズ制限に合わせてsplitのサイズを決めます。
権限・所有者・シンボリックリンクの注意点
権限や所有者の問題は、単純なファイル退避では目立ちませんが、サーバー移行や復元では重要になります。
特にWebアプリやデータベース関連の設定では、所有者が違うだけでサービスが起動しないことがあります。
バックアップはファイルの中身だけでなく、権限や所有者まで含めて復元できるかが大切です。
特にWebサーバーやシステム設定を扱う場合は、展開後に権限が変わると動作不良につながることがあります。
権限まわりのトラブルは展開直後には気づきにくく、アプリケーション起動時やログ書き込み時に初めて表面化することがあります。
権限や所有者を保持する場面
tarはファイルの権限やタイムスタンプなどの情報も扱えます。
通常のユーザーで展開すると所有者が現在のユーザーになることがあり、完全な復元にはroot権限が必要になる場合があります。
設定ファイルやWeb公開ディレクトリを復元するときは、展開後にls -lで所有者と権限を確認します。
バックアップ作成時のユーザーと復元時のユーザーが違う場合は、所有者やグループが想定どおりにならないことがあります。
復元後にサービスがファイルを読めない場合は、ファイル内容より先に権限と所有者を確認すると原因を見つけやすくなります。
root権限が必要になるケース
所有者情報をできるだけ元の状態で戻したい場合は、root権限での展開が必要になることがあります。
ただしrootで展開すると、間違った場所への展開や上書きの影響も大きくなります。
本番環境では、いきなり本来の場所へ展開せず、別ディレクトリへ展開して内容を確認してから移す方が安全です。
rootで展開する前には、`tar -tf`で中身を確認し、絶対パスや意図しないファイルが含まれていないかを確認します。
復元後は必要に応じて`chown`や`chmod`で調整しますが、元の権限を知らないまま一括変更しない方が安全です。
シンボリックリンクを含む場合の確認
シンボリックリンクを含むディレクトリをアーカイブするときは、リンクそのものを保存するのか、リンク先の実体を含めたいのかを確認します。
通常のtarではリンクはリンクとして扱われるため、復元先にリンク先が存在しないと壊れたように見えることがあります。
移行作業ではtar -tfでリンクを含むか確認し、復元後にリンク先のパスも見直します。
リンク先が絶対パスの場合、移行先のディレクトリ構成が違うだけでリンク切れになることがあります。
Web公開ディレクトリや設定ディレクトリでは、リンクの向きと権限を復元後に確認することが重要です。
tarとzipの違いと使い分け
どちらが優れているというより、何を残したいか、誰に渡すかで選ぶ形式が変わります。
運用バックアップならtar、一般的な共有ならzipという大まかな基準を持つと判断しやすくなります。
tarとzipはどちらもファイルをまとめる用途で使われますが、得意な場面が違います。
Linux運用ではtarが便利で、OSをまたいだ手軽な共有ではzipが選ばれやすいです。
どちらを使うかは、ファイルを受け取る相手、残したいメタ情報、圧縮や暗号化の要件で決めると分かりやすくなります。
たとえば、Linuxサーバーから別のLinuxサーバーへ移すならtar.gzが自然ですが、社外の相手へ資料を渡すならzipの方が説明しやすいことがあります。
この判断を先にしておくと、あとから展開できない、権限が残らない、パスワードを付けられないといった迷いを減らせます。
tarはLinux運用やバックアップ向き
tarはLinuxやUnix系の環境で、権限、所有者、シンボリックリンクなどを含めたバックアップに向いています。
サーバー移行、ログ保管、設定ファイルの退避、デプロイ前のバックアップなどではtar.gzが扱いやすいです。
Linux上で完結する作業なら、tarはコマンド例や情報も多く、運用に組み込みやすい形式です。
サーバー上で作成してサーバー上で復元する用途では、tarの方が作業手順を標準化しやすくなります。
一方で、受け取る相手がコマンド操作に慣れていない場合は、tar.gzを展開できる環境かどうかを確認しておく必要があります。
zipは配布や共有向き
zipはWindowsやmacOSの標準機能でも扱いやすく、非エンジニアへファイルを渡す場面に向いています。
一方で、Linuxの権限や所有者を厳密に残したいバックアップでは、tarの方が意図に合うことがあります。
相手がどの環境で開くのか、権限情報が必要なのかを基準に選びます。
資料や画像をまとめて渡す程度ならzipで十分なことが多く、サーバー設定やアプリ一式の退避ならtarの方が扱いやすい場面が多いです。
共有先がWindows中心ならzip、Linux運用チーム内ならtar.gzというように、受け手の環境を先に考えると迷いにくくなります。
パスワード付き圧縮をしたい場合の考え方
tar自体は、パスワード付き圧縮を目的にした形式ではありません。
パスワード付きで配布したい場合は、zipの暗号化機能やgpgなど別の方法を検討します。
ただし暗号化方式や運用ルールによって安全性が変わるため、重要データでは組織のルールや利用ツールの仕様を確認します。
tar.gzを作ってから別途暗号化する方法もありますが、復号手順や鍵の管理まで含めて運用を決める必要があります。
パスワードをメール本文で送るような運用は安全性が下がるため、共有方法も合わせて見直します。
| 比較項目 | tar | zip |
|---|---|---|
| 主な用途 | Linux運用やバックアップ | OSをまたいだ共有 |
| 権限情報 | 保持しやすい | 用途によって不向き |
| 圧縮形式 | 外部圧縮と組み合わせる | zip形式内で圧縮 |
| パスワード | 標準目的ではない | ツールにより対応 |
| 向いている読者 | サーバー運用者 | ファイル共有したい人 |
よくあるエラーとトラブルシューティング
エラーが出たときは、すぐにコマンドを変えるより、まず作業場所と対象パスを確認する方が近道になることがあります。
同じエラー文でも、容量不足、権限不足、パス指定ミスなど複数の原因が考えられるためです。
tarのトラブルは、コマンドの文法だけでなく、作業場所、容量、権限、対象ファイル数などが原因になることがあります。
エラー文だけを追うより、何を作ろうとしたのか、どこに展開しようとしたのかを順番に確認すると解決しやすくなります。
まずはコマンド、対象パス、保存先、実行ユーザー、空き容量の5つを確認すると、原因の切り分けが進みます。
同じコマンドを何度も実行する前に、`tar -tf`や`ls -ld`などで状況を確認すると、被害を広げずに済みます。
作業ログを残しておくと、あとからどのアーカイブをどこへ展開したのかを追いやすくなります。
展開したら大量のファイルが散らばった
大量のファイルが現在のディレクトリに出てしまった場合、アーカイブのトップ階層にディレクトリが含まれていなかった可能性があります。
次回からはtar -tf archive.tar.gzで中身を確認し、必要であれば空のディレクトリを作ってから-Cで展開します。
すでに散らばった場合は、更新時刻やファイル一覧を見ながら慎重に整理します。
散らばったファイルを急いで削除すると、もともと存在したファイルまで消してしまう危険があります。
復旧作業では、まず作業内容を記録し、削除よりも別ディレクトリへの移動で整理する方が安全です。
Cannot connect to C系のエラー
tar: Cannot connect to Cのようなエラーは、C:のような文字列をリモートホスト指定として解釈してしまう場面で出ることがあります。
Windows由来のパスやコロンを含む指定をLinuxのtarで扱うときは、パスの書き方を見直します。
ローカルファイルとして扱いたい場合は、相対パスやマウント先のLinuxパスに置き換えて指定します。
WSLやネットワークドライブを使っている場合は、Windows形式のパスとLinux形式のパスが混ざりやすくなります。
`C:\Users\…`のような表記をそのまま使うのではなく、`/mnt/c/Users/…`のような環境に合う形式へ直します。
容量不足・権限エラー・文字化け
容量不足が疑われる場合は、df -hで保存先の空き容量を確認します。
権限エラーが出る場合は、読み取り対象と書き込み先の権限を確認し、必要であれば適切なユーザーで実行します。
文字化けは環境の文字コードや作成元OSの影響を受けることがあるため、元の環境やファイル名の扱いを確認します。
容量不足は圧縮後のファイルサイズだけでなく、作業中の一時的な書き込みや保存先の制限で起きることもあります。
権限エラーをsudoで解決する前に、なぜその権限が必要なのかを確認すると、不要な権限昇格を避けられます。
Argument list too longへの対処
対象ファイルをシェルの展開で大量に渡すと、Argument list too longが出ることがあります。
この場合は、ワイルドカードで大量展開するのではなく、対象ディレクトリを指定してtarに処理させる方法を検討します。
findと組み合わせる方法もありますが、対象範囲を誤ると不要なファイルまで含めるため、事前に一覧確認を行います。
たとえば大量のログを扱う場合は、ファイルを1つずつ列挙するより、ログディレクトリ単位でまとめて除外条件を足す方が安定します。
どうしても細かく対象を選ぶ必要がある場合は、対象リストをファイルに出力してから扱う方法を検討します。
tarコマンドのFAQ
ここまでの内容を押さえておけば、日常的な圧縮、展開、バックアップ作業にはかなり対応できます。
最終的には、使うコマンドを覚えるだけでなく、実行前に中身と展開先を確認する習慣が重要です。
最後に、検索されやすい細かい疑問を短く整理します。
ここでは、本文の流れに入れると長くなりやすい疑問をまとめます。
細かい仕様は環境差があるため、迷ったときはman tarやtar –helpで確認します。
FAQは作業中に出やすい小さな疑問を解消するための補足として使ってください。
環境差がありそうな内容は、本文のコマンド例をそのまま使う前に自分の環境で確認するのが安全です。
tar.gzとtgzの違いは?
tar.gzとtgzは、どちらもtarアーカイブをgzipで圧縮した形式として扱われます。
一般的には.tar.gzの方が中身を連想しやすく、短くしたい場合に.tgzが使われます。
チーム内で命名ルールがある場合は、そのルールに合わせるのが分かりやすいです。
初めて共有する相手がいる場合は、`.tar.gz`のように分かりやすい拡張子を使う方が説明しやすくなります。
どちらの拡張子でも、基本的な展開コマンドは同じ考え方で扱えます。
tarはパスワード付き圧縮できる?
tar自体は、パスワード付き圧縮を標準的な目的にしたコマンドではありません。
秘密情報を守りたい場合は、zipの暗号化機能やgpgなど、暗号化を目的とした仕組みを組み合わせます。
重要なデータでは、パスワードを付ければ十分と考えず、共有方法や保管場所も含めて確認します。
tarでまとめることと暗号化することは別の目的なので、必要に応じて別ツールを組み合わせる考え方が安全です。
運用で使う場合は、復号できる担当者、鍵の保管場所、退職者や権限変更時の扱いまで決めておくと安心です。
隠しファイルも含めるには?
ディレクトリ全体を対象にすれば、その中の隠しファイルも含まれることがあります。
一方で、シェルのワイルドカードだけで対象を指定すると、ドットファイルを含め忘れることがあります。
確実に含めたい場合は、個別ファイルを並べるよりも対象ディレクトリを指定してアーカイブする方が安全です。
たとえば設定ディレクトリやdotfilesをバックアップする場合は、`tar -czvf dotfiles.tar.gz ./dotfiles`のようにディレクトリごと指定します。
作成後に`tar -tf dotfiles.tar.gz`で`.bashrc`や`.env.example`などが含まれているかを確認します。
macOSとLinuxで違いはある?
macOSとLinuxでは、標準のtar実装や使えるオプションが異なることがあります。
Linuxの手順をmacOSでそのまま実行して動かない場合は、tar –versionやman tarで実装とオプションを確認します。
記事やコマンド例を使うときは、自分の環境がGNU tarかBSD系tarかを意識するとトラブルを減らせます。
特にzstd、checkpoint、所有者関連のオプションなどは、環境によって使えるかどうかが変わることがあります。
チームで手順書を書く場合は、対象環境をLinux前提にするのか、macOSでも使うのかを明記すると再現性が上がります。