質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Q&A

解決済

2回答

825閲覧

超初心者です・・・。アーカイブの作り方、展開の仕方がわかりません・・・。

chanchanko

総合スコア3

terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

1グッド

1クリップ

投稿2023/04/12 05:16

実現したいこと

(1)
/var/tmp/sawaというディレクトリを作成し、sawa01~10.txtの10ファイルを作成する。※ファイルごとに1〜10の数字を書き込む

(2)
上記10ファイルをtarコマンドにてアーカイブする。

(3)
/var/tmp/minaというディレクトリを作成し、そこにtarコマンドにて10ファイルを展開する。

発生している問題・エラーメッセージ

(3)の作業を行うと

tar: aka01: open 不能: そのようなファイルやディレクトリはありません
tar: Error is not recoverable: exiting now

とでてしまいます。

試したこと

以下のコマンドをターミナルで順番に実行しました。

mkdir /var/tmp/sawa

touch /var/tmp/sawa/{sawa01.txt,sawa02.txt,sawa03.txt,sawa04.txt,sawa05.txt,sawa06.txt,sawa07.txt,sawa08.txt,sawa09.txt,sawa10.txt}

echo "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

tar cvf aka01.tar /var/tmp/sawa

mkdir /var/tmp/mina

cd /var/tmp/mina

tar xf sawa.tar ←このコマンドを入れるとうまく行きません。

色々と調べているのですがどうにもわからず質問した次第です。
よろしくお願いいたします。

sheephuman👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1T2R3M4

2023/04/12 05:56 編集

sawa.tarはどこで作ったのでしょうか。 aka01.tarはtar cvfしたディレクトリにあるんでしょ。
int32_t

2023/04/12 05:34

aka01.tar はどこのディレクトリにできてますか?
chanchanko

2023/04/13 00:03

すみません! 質問していただいたのにも関わらず、お答えする前に解決してしまいました・・・ 質問書いてくださりありがとうございました。
guest

回答2

0

ベストアンサー

bash

1# (1) 2mkdir /var/tmp/sawa 3for i in {1..10};do echo $i > /var/tmp/sawa/$(printf '%02d' $i).txt; done 4 5# (2) 6tar -cvf aka01.tar -C/var/tmp/sawa . 7 8# (3) 9mkdir /var/tmp/mina 10tar -C/var/tmp/mina -xvf aka01.tar

投稿2023/04/12 05:51

melian

総合スコア19763

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chanchanko

2023/04/12 23:59

ありがとうございます! 無事に完成させることができました!
guest

0

超初心者と言うことなので、丁寧に説明します。

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.tarsawa.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

もっとコンパクトに書くこともできますが、基本はこんな所です。
カレントディレクトリと相対パスの概念が理解できたら相対パスも使ってみましょう。

投稿2023/04/12 16:22

編集2023/04/12 16:23
otn

総合スコア84538

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chanchanko

2023/04/13 00:02

丁寧なコメントありがとうございます! otnさんのコメントもベストアンサーに選びたいところなのですが・・・ 絶対パス、相対パス、カレントディレクトリの概念は座学では学んだのですがまだまだ理解しきれておりません・・・ 書いていただいたコメントをこの後も読み返して、復習していきたいと思います。 重ねてのお礼になりますが、本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問