日々のあれこれφ(..)

もっぱら壁打ち

tarコマンドの挙動の確認

2014-04-10/不特定多数のzipファイルがある構成

# アーカイブ前
~/test1106$ ls -lah 2014-04-10 | head -n 1
total 532K
# アーカイブ
~/test1106$ tar cvf 2014-04-10.tar 2014-04-10
~/test1106$ ls -lah
total 568K
# 展開
~/test1106/2014-04-10_tar$ ls -lah 2014-04-10/ | head -n 3
total 532K

30Kほど増えた。

#1 含む
~/test1106$ zip -r 2014-04-10.zip 2014-04-10
#2 含まない
~/test1106/2014-04-10$ zip -r 2014-04-10_2.zip ./

#1の解凍
~/test1106$ unzip 2014-04-10.zip -d ../2014-04-10_1
~/test1106/2014-04-10_1$ tree -L 2 | head -n 5
.
└── 2014-04-10
    ├── 0021_0_log.gz
    ├── 0042_0_log.gz
    ├── 0051_0_log.gz
#2の解凍
~/test1106/2014-04-10$ unzip 2014-04-10_2.zip -d ../2014-04-10_2
~/test1106/2014-04-10_2$ tree -L 2 | head -n 3
.
├── 0021_0_log.gz
├── 0042_0_log.gz

最初親ディレクトリを含んでしまっていることを分かっておらず、codebuild等で実行するymlファイルのzip化を親ディレクトリ含んで行ってしまっていて、実行ファイルがありませんとエラーが出て結構な時間悩んだことがあった(今思えばむしろなんで気づかなかったと言いたいところだけれど)

ちなみに容量に関しては、親ディレクトリを含む方が2Kほど増えた

  • (余談)lsとduについて ファイルの容量を調べたい時、lsとduコマンドどちらを使えばいいかで迷った。 二つのコマンドを実行してフォルダやファイルのデータ容量を見ると、表示される数字に大きく差分が生じた。
$ ls -lah
-rw-r--r--@  1 user  staff   3.0K 11  4 22:53 test.txt

$ du -h ./test.txt
4.0K   ./test.txt

lsは「ファイルそのものの容量」

一方duは「ファイルが使用するディスク量」

を出力する。

どちらのコマンドもよく使っていたけれど、この辺りちゃんと区別できていなかったから目から鱗だった。

今回の場合はファイルそのものの容量を調査したかったから ls でよかった。