雑多なブログ

音楽や語学、プログラム関連の話題について書いています

tarでアーカイブを作成する場合はフォルダの指定方法に注意!

tarでアーカイブをする時に、特定のフォルダをアーカイブする事は多々あると思う。

そういう時に、何も考えずにパスで指定すると、パスの構成そのままアーカイブされてしまう。文章で説明すると難しいので例を示す事にする。

カレントディレクト

/home/yato/

対象ディレクトリを含むフォルダの構造

/home/yato/hoge
└── fuga
    └── moge
        └── moga
            ├── data.txt
            └── sub_dir
                └── sub.txt

この状況で moga フォルダをまるごとアーカイブスする場合を考えてみる。

カレントディレクトリからの相対パスでパスを指定する。

tar cvzf moga.tar.gz hoge/fuga/moge/moga

これを展開するとカレントディレクトリに下記の構成でフォルダとファイルが展開される。

hoge
└── fuga
    └── moge
        └── moga
            ├── data.txt
            └── sub_dir
                └── sub.txt

せめて、mogaというフォルダを基準にアーカイブして欲しいところ。 その場合は下記の通りオプションを指定すると良い感じになる。

tar cvzf moga.tar.gz -C hoge/fuga/moge moga 

で、これを展開すると

moga
├── data.txt
└── sub_dir
    └── sub.txt