超初心者と言うことなので、丁寧に説明します。
sh
1touch /var/tmp/sawa/{sawa01.txt,sawa02.txt,sawa03.txt,sawa04.txt,sawa05.txt,sawa06.txt,sawa07.txt,sawa08.txt,sawa09.txt,sawa10.txt}
は、/var/tmp/sawa
ディレクトクリの中にsawa01.txt
他のファイルを作りますが、
sh
1echo "1" > sawa01.txt && echo "2" > sawa02.txt && echo "3" > sawa03.txt && echo "4" > sawa04.txt && echo "5" > sawa05.txt && echo "6" > sawa06.txt && echo "7" > sawa07.txt && echo "8" > sawa08.txt && echo "9" > sawa09.txt && echo "10" > sawa10.txt
は、カレントディレクトリの中にsawa01.txt
他のファイルを作ります。
一般的にはそれらは別物です。
tar cvf aka01.tar /var/tmp/sawa
は、/var/tmp/sawa
のディレクトリの中のファイル群をカレントディレクトリーのaka01.tar
というファイルにアーカイブしています。
tar xf sawa.tar
では、さっき作ったアーカイブファイルの名前はaka01.tar
だったということをすっかり忘れて、突然出てきた名前であるsawa.tar
というファイルを展開しようとしていますが、そんなファイルはさっきまでには作ってないので、当然見つからず、 aka01: open 不能: そのようなファイルやディレクトリはありません
というエラーになります。
また、cd /var/tmp/mina
してからtar xf sawa.tar
していますので、このときカレントディレクトリは/var/tmp/mina
なので、sawa.tar
は実は/var/tmp/mina/sawa.tar
のことですが、/var/tmp/mina/
は直前に作ったばかりで中味は空なので、仮にファイル名を間違えていなかったとしても、そのディレクトリにそんなファイルは存在しないです。
おそらく、カレントディレクトリの概念を理解してないか、あるいは、相対パスの概念を理解していないか、少なくとも一方です。
カレントディレクトリや相対パスの概念をしっかり理解していない場合は、全てのファイルパスを絶対パス(フルパス)で書きましょう。
また、tar cvf aka01.tar /var/tmp/sawa
でアーカイブファイルを作っているので、例えばファイルsawa01.txt
というファイルは、var/tmp/sawa/sawa01.txt
という名前でアーカイブされます。これを単にtar xf
するとパス付きで展開されるので、cd /var/tmp/miwa
してからこれを行うと、仮にアーカイブファイル名を間違えていなかったとしても、/var/tmp/miwa/var/tmp/sawa/sawa01.txt
というファイル名で展開されてしまいます。
と、言うように、色々間違えています。
カレントディレクトリの概念を理解していない状態で、ちゃんとやるためには、
1.echo "1" > sawa01.txt
等は絶対パスでecho "1" > /var/tmp/sawa/sawa01.txt
のように書く。
2.アーカイブファイルの中のファイル名にディレクトリが含まれないように、cd
してからtar
する。アーカイブファイル名も絶対パスで書く。
cd /var/tmp/sawa
tar cf /var/tmp/aka01.tar *
3.アーカイブファイルの展開時も、アーカイブファイル名は絶対パスで書く。ファイル名も間違えない(aka01.tar
とsawa.tar
のどちらが正しいか不明だが、ここでは前者とする)。
tar xf /var/tmp/aka01.tar
全体を並べると、
sh
1mkdir /var/tmp/sawa
2
3# touchは不要なので削除
4
5echo "1" > /var/tmp/sawa/sawa01.txt
6echo "2" > /var/tmp/sawa/sawa02.txt
7中略
8echo "10" > /var/tmp/sawa/sawa10.txt
9
10cd /var/tmp/sawa
11tar cvf /var/tmp/aka01.tar *
12
13mkdir /var/tmp/mina
14cd /var/tmp/mina
15tar xf /var/tmp/aka01.tar
もっとコンパクトに書くこともできますが、基本はこんな所です。
カレントディレクトリと相対パスの概念が理解できたら相対パスも使ってみましょう。