🈳
空のアーカイブ作成(tar)
はじめに
もうすぐ 2024 年の 8 月が終わろうとしています。 こんな不条理が許されてはなりませんから、全く関係のないところで不条理に抗ってみましょう。
空のアーカイブ作成はご容赦願います
GNU の tar(1) でアーカイブを作成するときの構文は以下の通りです。 引数 FILE... は省略可能であるように見えます。
tar --create [--file ARCHIVE] [OPTIONS] [FILE...]
しかし、実際に引数 FILE... を省略して実行してみると「空のアーカイブ作成はご容赦願います」と怒られてしまいます。
$ tar --create --file=empty.tar
tar: 空のアーカイブ作成はご容赦願います
より詳しい情報は 'tar --help' または 'tar --usage' で.
なんとしてでも空のアーカイブを作成する
空のアーカイブを作るために以下の手順を踏みます。
- ファイルの含まれているアーカイブを作成する
- アーカイブに含まれているファイルを全て削除する
- 空のアーカイブが完成する
実際にやってみましょう。
まず、ファイルの含まれているアーカイブを作成します。 アーカイブに格納するファイルは何でも良いのですが、空のファイル dummy を作成し、それを指定します。
$ >dummy
$ tar --create --file=empty.tar dummy
$ tar --list --verbose --file=empty.tar
-rw-rw-r-- mkn/mkn 0 2024-08-24 20:12 dummy
そして、その出来上がったアーカイブからメンバ dummy を削除します。 アーカイブからメンバを削除するには tar --delete
を利用します。
$ tar --delete --file=empty.tar dummy
$ tar --list --verbose --file=empty.tar
これでメンバを何も持たない空のアーカイブが完成しました。
空のアーカイブを眺める
空のアーカイブは一体どのようなファイルになっているのでしょう。 みんなだいすき od(1) でファイルの内容をダンプしてみましょう。
$ od empty.tar
0000000 000000 000000 000000 000000 000000 000000 000000 000000
*
0024000
なるほど、これは 10240 個のヌルバイトの集まりであるようです。
簡単に空のアーカイブを作成する
つまり、以下のコマンドを実行することで簡単に空のアーカイブを作成できます。
$ dd if=/dev/zero of=empty.tar bs=512 count=20
20+0 records in
20+0 records out
10240 bytes (10 kB, 10 KiB) copied, 0.000130402 s, 78.5 MB/s
おわりに
おわりです。
この記事の元ネタは 2020 年のツイートにあります。
Discussion