2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

tar: Removing leading `/' from member namesについて

Posted at

事象

tarを使っていたら警告tar: Removing leading `/' from member namesが出ていたので、何だろうと思い、調べてみた内容と検証結果を備忘録として残しておきます。

tarでアーカイブの作成(とgzipへの圧縮)を行います。srcフォルダのアーカイブをdstフォルダにa.tgzとして保存したいです。ところが、実際にはsrcフォルダではなく、ルートフォルダ直下のhomeフォルダがアーカイブされてしまいます。

$ pwd
/home/username/temp
$ ls
dst  src
$ ls src
a.txt  b.txt  c.txt
$ ls dst
$ tar cvf /home/username/temp/dst/a.tgz /home/username/temp/src
tar: Removing leading `/' from member names
/home/username/temp/src/
/home/username/temp/src/c.txt
/home/username/temp/src/a.txt
/home/username/temp/src/b.txt
$ ls dst
a.tgz
$ tar xvf dst/a.tgz dst
tar: dst: Not found in archive
tar: Exiting with failure status due to previous errors
$ tar xvf dst/a.tgz
home/username/temp/src/
home/username/temp/src/c.txt
home/username/temp/src/a.txt
home/username/temp/src/b.txt
$ ls
dst  home  src

どうやらtarコマンドでは絶対パスを指定すると、先頭の/が削除されるようです。相対パスで指定してねってことなんですかね。

解決方法

ということで、カレントディレクトリにsrcフォルダがある状態でtarコマンドを以下のように実行すれば良いです。

$ tar cvf /home/username/temp/dst/a.tgz src
src/
src/c.txt
src/a.txt
src/b.txt

カレントディレクトリ以外のフォルダをアーカイブしたい場合は、-Cオプションを使います。-Cオプションで指定したディレクトリに移動した状態でアーカイブを実行できます。

$ pwd
/home/username/temp2
$ tar cvf a.tgz -C /home/username/temp src
src/
src/c.txt
src/a.txt
src/b.txt

しかし、なんで絶対パスで指定できないんですかね。

2
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?