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ほど増えた。
- 親ディレクトリ(2014-04-10/)を含むか否か
#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
でよかった。