uuutee.log

tarコマンドでパスを含めずにアーカイブする

問題

下記のようなファイル構造で target ディレクトリだけをアーカイブしたい。

- path
    - to
        - target
            - file1
            - file2

オプション無しで使った場合

zip コマンドなどもそうだが cd してからでないと、アーカイブ自体にカレントディレクトリからのパスが含まれてしまう
なので、下記のように target に cd してからアーカイブする

cd /path/to/
tar -czf target.tar.gz target

-C オプション

毎度 cd するのも面倒だし、シェルスクリプトでの自動化もやりづらい。
調べると、 -C オプションで、cd してから tar で圧縮と同じことができた

tar -C /path/to/ -czf /path/to/target.tar.gz target

展開先を指定する

同様に展開する際も -C オプションで展開先を指定できる

tar -xzf /path/from/archive.tar.gz -C /path/to/dest/