【UNIX】tarコマンドで任意のディレクトリを展開先として指定する方法
2018/03/17
通常、tar.gzで圧縮されたファイルを「tar xzvf dbdump_20180306.tar.gz」のように指定すると、カレントディレクトリ(現在のディレクトリ)に解凍(展開)されてしまいます。
展開先のディレクトリを任意のディレクトリにしたい場合の方法を備忘録としてポストします。
tarコマンドで展開先を指定する際は C オプション
(失敗)オプション無しで展開先を指定する
まずは失敗する方法。
/var/www/yamada-develop/public_html/db_dump ディレクトリ中にDBのダンプファイルがあるとします。
展開元ファイルのディレクトリへ移動後に /var/www/hoge/tmp/ へ直接展開しようとすると、以下のようになりました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
[root@atsuko db_dump]# pwd /var/www/yamada-develop/public_html/db_dump [root@atsuko db_dump]# ls -al 合計 456068 drwxrwxr-x 2 t_yamada maykun 4096 3月 6 08:01 . drwxrwxr-x 16 root maykun 4096 5月 9 2017 .. -rw-r--r-- 1 t_yamada maykun 66340900 2月 28 06:35 dbdump_20180228.tar.gz -rw-r--r-- 1 t_yamada maykun 66441139 3月 1 06:35 dbdump_20180301.tar.gz -rw-r--r-- 1 t_yamada maykun 66590076 3月 2 06:35 dbdump_20180302.tar.gz -rw-r--r-- 1 t_yamada maykun 66728935 3月 3 06:35 dbdump_20180303.tar.gz -rw-r--r-- 1 t_yamada maykun 66773553 3月 4 06:35 dbdump_20180304.tar.gz -rw-r--r-- 1 t_yamada maykun 66773553 3月 5 06:35 dbdump_20180305.tar.gz -rw-r--r-- 1 t_yamada maykun 66852252 3月 6 06:35 dbdump_20180306.tar.gz [root@atsuko db_dump]# tar xzvf /var/www/hoge/tmp/dbdump_20180306.tar.gz tar: /var/www/hoge/tmp/dbdump_20180306.tar.gz: open 不能: そのようなファイルやディレクトリはありません tar: エラーを回復できません: 直ちに終了します tar: Child returned status 2 tar: 処理中にエラーが起きましたが、最後まで処理してからエラー終了させました |
(成功)C オプション付きで展開
コマンドの後に -C オプションを使い、展開先を指定すればエラーは出ません。
1 |
tar xzvf dbdump_20180306.tar.gz -C /var/www/hoge/tmp |
Cオプションを使わない方法
Cオプションを使わない場合は、展開したいパスへカレントディレクトリ(現在のディレクトリ)を移動させてから、展開元のファイルを絶対パスで指定すれば、展開可能です。
逆に考えろってことですね。
1 2 |
cd /var/www/hoge/tmp tar xzvf /var/www/yamada-develop/public_html/db_dump/dbdump_20180306.tar.gz |
なるほどですね。