[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系のオペレーティングシステムで使用されるアーカイブ作成ツールです。
主に複数のファイルやディレクトリを一つのファイルにまとめるために利用されます。
このアーカイブファイルは、バックアップやデータの転送を効率的に行うために非常に便利です。
tar
は tape archive
の略で、元々はテープドライブにデータを保存するために開発されましたが、現在ではさまざまなストレージメディアで使用されています。
tar
コマンドは、アーカイブの作成だけでなく、内容の確認や解凍、圧縮などの機能も持っています。
これにより、ユーザーはファイルの管理を簡単に行うことができ、特に大規模なデータセットを扱う際に重宝します。
tar
は、圧縮オプションを組み合わせることで、アーカイブファイルのサイズを小さくすることも可能です。
tarアーカイブの作成方法
基本的なtarアーカイブの作成
tar
コマンドを使用して、基本的なアーカイブを作成するには、以下のコマンドを実行します。
tar -cf archive.tar file1.txt file2.txt
このコマンドでは、-c
オプションで新しいアーカイブを作成し、-f
オプションでアーカイブファイルの名前を指定しています。
archive.tar
というファイルに、file1.txt
とfile2.txt
がまとめられます。
複数ファイルをまとめてアーカイブする方法
複数のファイルを一度にアーカイブする場合、ファイル名をスペースで区切って指定します。
例えば、次のように実行します。
tar -cf archive.tar file1.txt file2.txt file3.txt
このコマンドにより、file1.txt
、file2.txt
、file3.txt
がarchive.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.txt
とfile2.txt
がarchive.tar.gz
という名前の圧縮アーカイブにまとめられます。
gzip
圧縮により、ファイルサイズが小さくなります。
bzip2圧縮を使ったアーカイブ作成(-jオプション)
bzip2
圧縮を使用する場合は、-j
オプションを指定します。
以下のコマンドを実行します。
tar -cjf archive.tar.bz2 file1.txt file2.txt
このコマンドでは、file1.txt
とfile2.txt
がarchive.tar.bz2
という名前のbzip2
圧縮アーカイブにまとめられます。
bzip2
はgzip
よりも高い圧縮率を提供しますが、圧縮にかかる時間は長くなることがあります。
xz圧縮を使ったアーカイブ作成(-Jオプション)
xz
圧縮を使用するには、-J
オプションを指定します。
以下のコマンドを実行します。
tar -cJf archive.tar.xz file1.txt file2.txt
このコマンドでは、file1.txt
とfile2.txt
がarchive.tar.xz
という名前のxz
圧縮アーカイブにまとめられます。
xz
は非常に高い圧縮率を持ち、特に大きなファイルに対して効果的です。
圧縮なしのアーカイブ作成
圧縮なしでアーカイブを作成する場合は、圧縮オプションを指定せずに実行します。
以下のコマンドを使用します。
tar -cf archive.tar file1.txt file2.txt
このコマンドでは、file1.txt
とfile2.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.001
、archive.tar.002
のようになります。
分割されたアーカイブの結合方法
分割されたアーカイブを結合するには、cat
コマンドを使用して、分割ファイルを一つのアーカイブにまとめます。
以下のコマンドを実行します。
cat archive.tar.* > combined_archive.tar
このコマンドでは、archive.tar.001
、archive.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.tar
にnewfile.txt
を追加します。
アーカイブが既に存在する場合でも、簡単に新しいファイルを追加することができます。
ただし、アーカイブが圧縮されている場合(例:.tar.gz
や.tar.bz2
)、この方法では追加できないため、まず圧縮を解除してから追加する必要があります。
アーカイブ内のファイルを更新する方法(-uオプション)
アーカイブ内のファイルを更新するには、-u
オプションを使用します。
このオプションを使うことで、アーカイブ内のファイルが変更された場合に、そのファイルを新しいバージョンに置き換えることができます。
以下のコマンドを実行します。
tar -uf archive.tar updatedfile.txt
このコマンドでは、archive.tar
内のupdatedfile.txt
が新しいバージョンに更新されます。
-u
オプションは、アーカイブ内のファイルが指定したファイルよりも古い場合にのみ更新を行います。
これにより、無駄な更新を避けることができ、効率的にアーカイブを管理できます。
応用例
リモートサーバーにtarアーカイブを作成して転送する方法
リモートサーバーにtarアーカイブを作成し、転送するには、ssh
とtar
を組み合わせて使用します。
以下のコマンドを実行します。
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アーカイブを作成しながら直接リモートに送信するには、ssh
とtar
を組み合わせて使用します。
以下のコマンドを実行します。
tar -czf - /path/to/directory | ssh user@remote-server 'cat > /path/to/remote/archive.tar.gz'
このコマンドでは、指定したディレクトリを圧縮し、標準出力を通じてリモートサーバーに送信します。
リモートサーバーでは、archive.tar.gz
として保存されます。
これにより、アーカイブを作成しながら直接リモートサーバーに送信することができます。
よくある質問
まとめ
この記事では、tar
コマンドを使用したアーカイブの作成方法や圧縮オプション、アーカイブの確認・操作、分割・結合、除外オプション、更新・追加の方法について詳しく解説しました。
これにより、ファイルやディレクトリの管理がより効率的に行えるようになります。
ぜひ、実際にtar
コマンドを使って、バックアップやデータ転送の作業を行ってみてください。