[Linux] tarコマンドの使い方 – tarアーカイブの作成

tarコマンドは、ファイルやディレクトリをまとめてアーカイブするために使用されます。

tarアーカイブの作成には、-cオプションを使用します。

基本的な構文はtar -cvf アーカイブ名.tar ファイル/ディレクトリです。

-cはアーカイブの作成、-vは処理の詳細を表示、-fは出力ファイル名を指定します。

圧縮を行う場合は、-z(gzip)や-j(bzip2)を追加します。

例として、tar -cvzf archive.tar.gz dir/dir/をgzip圧縮したアーカイブを作成します。

この記事でわかること
  • tarコマンドの基本的な使い方
  • アーカイブの圧縮オプションの活用法
  • アーカイブの確認と操作方法
  • 分割や結合の手法
  • 除外オプションや更新方法の活用

目次から探す

tarコマンドとは

tarコマンドは、LinuxやUnix系のオペレーティングシステムで使用されるアーカイブ作成ツールです。

主に複数のファイルやディレクトリを一つのファイルにまとめるために利用されます。

このアーカイブファイルは、バックアップやデータの転送を効率的に行うために非常に便利です。

tartape archive の略で、元々はテープドライブにデータを保存するために開発されましたが、現在ではさまざまなストレージメディアで使用されています。

tarコマンドは、アーカイブの作成だけでなく、内容の確認や解凍、圧縮などの機能も持っています。

これにより、ユーザーはファイルの管理を簡単に行うことができ、特に大規模なデータセットを扱う際に重宝します。

tarは、圧縮オプションを組み合わせることで、アーカイブファイルのサイズを小さくすることも可能です。

tarアーカイブの作成方法

基本的なtarアーカイブの作成

tarコマンドを使用して、基本的なアーカイブを作成するには、以下のコマンドを実行します。

tar -cf archive.tar file1.txt file2.txt

このコマンドでは、-cオプションで新しいアーカイブを作成し、-fオプションでアーカイブファイルの名前を指定しています。

archive.tarというファイルに、file1.txtfile2.txtがまとめられます。

複数ファイルをまとめてアーカイブする方法

複数のファイルを一度にアーカイブする場合、ファイル名をスペースで区切って指定します。

例えば、次のように実行します。

tar -cf archive.tar file1.txt file2.txt file3.txt

このコマンドにより、file1.txtfile2.txtfile3.txtarchive.tarにまとめられます。

ディレクトリ全体をアーカイブする方法

特定のディレクトリ全体をアーカイブするには、ディレクトリ名を指定します。

以下のコマンドを使用します。

tar -cf archive.tar /path/to/directory

このコマンドでは、指定したディレクトリ内のすべてのファイルとサブディレクトリがarchive.tarにアーカイブされます。

アーカイブファイルの名前を指定する方法

アーカイブファイルの名前は、-fオプションの後に指定します。

例えば、次のように実行します。

tar -cf my_archive.tar /path/to/directory

この場合、アーカイブファイルはmy_archive.tarという名前になります。

アーカイブ作成時の詳細表示(-vオプション)

アーカイブを作成する際に、詳細な進行状況を表示したい場合は、-vオプションを追加します。

以下のように実行します。

tar -cvf archive.tar file1.txt file2.txt

このコマンドでは、アーカイブ作成中に処理されるファイル名が表示され、進行状況を確認しながら作業を進めることができます。

圧縮オプションの活用

gzip圧縮を使ったアーカイブ作成(-zオプション)

tarコマンドでgzip圧縮を使用するには、-zオプションを追加します。

以下のコマンドを実行することで、アーカイブを作成しながら圧縮することができます。

tar -czf archive.tar.gz file1.txt file2.txt

このコマンドでは、file1.txtfile2.txtarchive.tar.gzという名前の圧縮アーカイブにまとめられます。

gzip圧縮により、ファイルサイズが小さくなります。

bzip2圧縮を使ったアーカイブ作成(-jオプション)

bzip2圧縮を使用する場合は、-jオプションを指定します。

以下のコマンドを実行します。

tar -cjf archive.tar.bz2 file1.txt file2.txt

このコマンドでは、file1.txtfile2.txtarchive.tar.bz2という名前のbzip2圧縮アーカイブにまとめられます。

bzip2gzipよりも高い圧縮率を提供しますが、圧縮にかかる時間は長くなることがあります。

xz圧縮を使ったアーカイブ作成(-Jオプション)

xz圧縮を使用するには、-Jオプションを指定します。

以下のコマンドを実行します。

tar -cJf archive.tar.xz file1.txt file2.txt

このコマンドでは、file1.txtfile2.txtarchive.tar.xzという名前のxz圧縮アーカイブにまとめられます。

xzは非常に高い圧縮率を持ち、特に大きなファイルに対して効果的です。

圧縮なしのアーカイブ作成

圧縮なしでアーカイブを作成する場合は、圧縮オプションを指定せずに実行します。

以下のコマンドを使用します。

tar -cf archive.tar file1.txt file2.txt

このコマンドでは、file1.txtfile2.txtが圧縮されることなく、archive.tarという名前のアーカイブにまとめられます。

圧縮を行わないことで、アーカイブ作成が迅速に行えます。

tarアーカイブの確認と操作

アーカイブ内容の確認(-tオプション)

tarコマンドを使用してアーカイブの内容を確認するには、-tオプションを使用します。

以下のコマンドを実行することで、アーカイブ内のファイルリストを表示できます。

tar -tf archive.tar

このコマンドでは、archive.tarの中に含まれるファイルやディレクトリの一覧が表示されます。

これにより、アーカイブの内容を確認することができます。

アーカイブのサイズ確認

アーカイブのサイズを確認するには、lsコマンドを使用してファイルサイズを表示します。

以下のように実行します。

ls -lh archive.tar

このコマンドでは、archive.tarのサイズが人間に読みやすい形式で表示されます。

-lオプションは詳細情報を表示し、-hオプションはサイズを適切な単位(KB、MBなど)で表示します。

アーカイブの整合性チェック(-Wオプション)

アーカイブの整合性を確認するには、-Wオプションを使用します。

以下のコマンドを実行します。

tar -cf archive.tar --check

このコマンドでは、archive.tarの整合性がチェックされ、アーカイブ内のファイルが正しく保存されているかどうかが確認されます。

整合性チェックは、アーカイブが破損していないかを確認するために重要です。

tarアーカイブの分割と結合

大きなアーカイブを分割して作成する方法(-Mオプション)

大きなアーカイブを分割して作成するには、-Mオプションを使用します。

このオプションを使うと、指定したサイズごとにアーカイブを分割することができます。

以下のコマンドを実行します。

tar -cMf archive.tar -L 100M /path/to/directory

このコマンドでは、/path/to/directoryの内容を100MBごとに分割してarchive.tarにアーカイブします。

分割されたアーカイブは、archive.tarの後に連番が付いたファイルとして作成されます。

例えば、archive.tar.001archive.tar.002のようになります。

分割されたアーカイブの結合方法

分割されたアーカイブを結合するには、catコマンドを使用して、分割ファイルを一つのアーカイブにまとめます。

以下のコマンドを実行します。

cat archive.tar.* > combined_archive.tar

このコマンドでは、archive.tar.001archive.tar.002などの分割ファイルを結合して、combined_archive.tarという新しいアーカイブファイルを作成します。

結合後、combined_archive.tarを通常のtarコマンドで解凍することができます。

結合したアーカイブを解凍するには、次のように実行します。

tar -xf combined_archive.tar

これにより、元のファイルやディレクトリが復元されます。

tarアーカイブの除外オプション

特定のファイルやディレクトリを除外する方法(–excludeオプション)

tarコマンドを使用してアーカイブを作成する際に、特定のファイルやディレクトリを除外したい場合は、--excludeオプションを使用します。

以下のコマンドを実行することで、指定したファイルやディレクトリを除外できます。

tar -czf archive.tar.gz --exclude='*.log' /path/to/directory

このコマンドでは、/path/to/directory内のすべてのファイルをアーカイブしますが、拡張子が.logのファイルは除外されます。

これにより、不要なログファイルをアーカイブに含めずに済みます。

複数の除外パターンを指定する方法

複数の除外パターンを指定する場合は、--excludeオプションを複数回使用します。

以下のように実行します。

tar -czf archive.tar.gz --exclude='*.log' --exclude='temp/' /path/to/directory

このコマンドでは、/path/to/directory内のすべてのファイルをアーカイブしますが、拡張子が.logのファイルとtempディレクトリは除外されます。

これにより、特定のファイルやディレクトリを柔軟に除外することができます。

また、除外パターンにはワイルドカードを使用できるため、特定の条件に合致するファイルを簡単に除外することが可能です。

tarアーカイブの更新と追加

既存のアーカイブにファイルを追加する方法(-rオプション)

既存のアーカイブに新しいファイルを追加するには、-rオプションを使用します。

このオプションを使うことで、アーカイブにファイルを追加することができます。

以下のコマンドを実行します。

tar -rf archive.tar newfile.txt

このコマンドでは、archive.tarnewfile.txtを追加します。

アーカイブが既に存在する場合でも、簡単に新しいファイルを追加することができます。

ただし、アーカイブが圧縮されている場合(例:.tar.gz.tar.bz2)、この方法では追加できないため、まず圧縮を解除してから追加する必要があります。

アーカイブ内のファイルを更新する方法(-uオプション)

アーカイブ内のファイルを更新するには、-uオプションを使用します。

このオプションを使うことで、アーカイブ内のファイルが変更された場合に、そのファイルを新しいバージョンに置き換えることができます。

以下のコマンドを実行します。

tar -uf archive.tar updatedfile.txt

このコマンドでは、archive.tar内のupdatedfile.txtが新しいバージョンに更新されます。

-uオプションは、アーカイブ内のファイルが指定したファイルよりも古い場合にのみ更新を行います。

これにより、無駄な更新を避けることができ、効率的にアーカイブを管理できます。

応用例

リモートサーバーにtarアーカイブを作成して転送する方法

リモートサーバーにtarアーカイブを作成し、転送するには、sshtarを組み合わせて使用します。

以下のコマンドを実行します。

tar -czf - /path/to/directory | ssh user@remote-server 'cat > archive.tar.gz'

このコマンドでは、/path/to/directoryを圧縮し、標準出力を通じてリモートサーバーに転送します。

リモートサーバーでは、archive.tar.gzとして保存されます。

これにより、アーカイブを作成しながら直接リモートサーバーに転送することができます。

cronを使って定期的にtarアーカイブを作成する方法

cronを使用して定期的にtarアーカイブを作成するには、crontabにエントリを追加します。

以下のように設定します。

0 2 * * * tar -czf /path/to/backup/archive_$(date +\%Y\%m\%d).tar.gz /path/to/directory

この設定では、毎日午前2時に指定したディレクトリのアーカイブを作成し、日付を含むファイル名で保存します。

これにより、定期的なバックアップが自動的に行われます。

tarアーカイブを作成しながら直接圧縮する方法

tarアーカイブを作成しながら直接圧縮するには、圧縮オプションを指定して実行します。

以下のコマンドを使用します。

tar -czf archive.tar.gz /path/to/directory

このコマンドでは、指定したディレクトリを圧縮しながらarchive.tar.gzとして保存します。

圧縮とアーカイブ作成を同時に行うことで、効率的にファイルを管理できます。

tarアーカイブを作成しながら直接リモートに送信する方法

tarアーカイブを作成しながら直接リモートに送信するには、sshtarを組み合わせて使用します。

以下のコマンドを実行します。

tar -czf - /path/to/directory | ssh user@remote-server 'cat > /path/to/remote/archive.tar.gz'

このコマンドでは、指定したディレクトリを圧縮し、標準出力を通じてリモートサーバーに送信します。

リモートサーバーでは、archive.tar.gzとして保存されます。

これにより、アーカイブを作成しながら直接リモートサーバーに送信することができます。

よくある質問

tarアーカイブの作成中にエラーが発生した場合の対処法は?

tarアーカイブの作成中にエラーが発生した場合、以下の対処法を試みてください。

  • エラーメッセージを確認し、具体的な原因を特定します。
  • アーカイブ対象のファイルやディレクトリのパーミッションを確認し、必要に応じて権限を変更します。
  • 指定したパスが正しいかどうかを確認し、存在しないファイルやディレクトリを指定していないか確認します。
  • ディスクの空き容量を確認し、十分な空きがあるか確認します。

tarアーカイブの圧縮形式はどれを選べば良い?

tarアーカイブの圧縮形式は、使用目的やファイルの特性に応じて選ぶことが重要です。

以下のポイントを考慮してください。

  • gzip: 圧縮速度が速く、一般的に使用される形式。

ファイルサイズも適度に小さくなります。

  • bzip2: gzipよりも高い圧縮率を提供しますが、圧縮にかかる時間が長くなります。

大きなファイルに適しています。

  • xz: 非常に高い圧縮率を持ち、特に大きなデータセットに効果的ですが、圧縮速度は遅くなります。
  • 使用する環境や目的に応じて、これらの圧縮形式を選択してください。

tarアーカイブの作成速度を改善する方法は?

tarアーカイブの作成速度を改善するためには、以下の方法を試してみてください。

  • 圧縮オプションを見直す: 圧縮率が高いオプション(bzip2やxz)を使用すると、圧縮に時間がかかるため、gzipを使用することで速度を向上させることができます。
  • ファイル数を減らす: アーカイブするファイルの数が多いと、処理に時間がかかります。

必要なファイルのみを選択してアーカイブすることを検討してください。

  • ハードウェアの性能を向上させる: SSDを使用することで、ディスクI/Oの速度が向上し、アーカイブ作成が速くなります。
  • 並列処理を利用する: pigzpbzip2などの並列圧縮ツールを使用することで、マルチコアCPUの性能を活かし、圧縮速度を向上させることができます。

まとめ

この記事では、tarコマンドを使用したアーカイブの作成方法や圧縮オプション、アーカイブの確認・操作、分割・結合、除外オプション、更新・追加の方法について詳しく解説しました。

これにより、ファイルやディレクトリの管理がより効率的に行えるようになります。

ぜひ、実際にtarコマンドを使って、バックアップやデータ転送の作業を行ってみてください。

  • URLをコピーしました!
目次から探す