読者です 読者をやめる 読者になる 読者になる

cookies.txt      .scr

ただのテキストファイルのようだ

オリジナルファイルと別名でtar archive作るとき

./dir/hogeというファイルがあって、これをtarで固める。

% find dir
dir
dir/hoge
% tar zcf out.tgz dir
% tar tf out.tgz
dir/
dir/hoge

(あまりないかもしれないけど)このhogeを、そのままの名前でなくて別名でアーカイブしたいとき。
一時的に、直接hogeをリネームしてもいいんだけど、いろんな理由でリネームをしたくない時がある。
そんなとき

% mkdir sym
% cd sym && ln -s ../dir/* .
% mv hoge fuga
% cd ..
% tar zchf out.tgz sym
% rm -r sym
% tar zxf out.tgz
% cd sym && ls -l | cut -d' ' -f1
合計
-rw-r--r--

という感じ。

要は別ディレクトリから元ファイルにシンボリックリンク張って、そのリンクのファイル名を変えよう、ということ。
だけど、そのままアーカイブするとリンク情報がそのままアーカイブされてしまうので、tarのオプションに'-h'(--dereference)を付けてシンボリックリンクを辿らせる。

もちろん元々別にシンボリックリンクをアーカイブしたかったのだったらできない。ハードリンクでも張って--hard-dereference付けてもよいけれど。