【質問】
Solaris8 純正のtarコマンドで、ファイルを除いてディレクトリのみをアーカイブする良い方法を模索しています。
【背景】
ディレクトリ構成をtarで抽出し、別のマシンで解凍する(/export/homeなど)際に、配下のファイルサイズが大きく時間がかかるため、抽出の際にファイルを除外しておきたい
【前提】
tarでアーカイブする際、ディレクトリを指定すると配下のファイルも再帰的にアーカイブされてしまう。
【詳細】
例えば、以下のようなディレクトリ構造のとき、
AAA/
AAA/aaa/
AAA/aaa/hoge.c
BBB/
BBB/foo.txt
ディレクトリのみをtarアーカイブして、
AAA/
AAA/aaa/
BBB/
という内容のtarアーカイブを作成するとき、私は以下のようなやり方をしています。
A.全抽出→解凍→ファイル消し→再抽出
# tar cf - AAA BBB | (cd /tmp/work; tar xvf -)
# cd /tmp/work
# find . -type f -exec rm {} \;
# tar cvf /dev/rmt/0 AAA BBB
B.除外リスト作成→除外リスト指定で抽出
# find AAA BBB -type f > exclude-list
# tar cvfX /dev/rmt/0 exclude-list AAA BBB
どちらも結果的にはディレクトリのみ抽出できるので問題はないのですが、ちょっと手間がかかります。コマンドライン1行でできる良い方法があれば教えて下さい。
# そもそも【前提】が私の思い込みかもしれないので、
# 「違うよ」という指摘があればお願いします。
No.3ベストアンサー
- 回答日時:
お望みのことはtarではできませんがcpioを使えば簡単にできます。
例えば、以下のようなファイルとディレクトリがある場合
% find ./a
a
a/b
a/b/c
a/b/i.txt
a/b/j.txt
a/x.txt
a/y.txt
アーカイブの作成
% find a/ -type d | cpio -ov > a.cpio
a/
a/b
a/b/c
1 block
アーカイブの展開
% cpio -ivd < a.cpio
a
a/b
a/b/c
1 block
といった感じです。
No.2
- 回答日時:
ディレクトリの構成だけを移したいのだったら
tarにこだわらずとも
ディレクトリ構成リストを作るスクリプトと
リストからmkdirするスクリプトを
作ればいいような気がするのですが。
ご提案いただいたやり方、私もよく使います。
(ディレクトリ、パーミッション、オーナー、グループを指定するディレクトリ構成リストを作って、そのリストからmkdir/chown/chmodするスクリプトを使っています)
作るだけが目的の場合はスクリプトでよいのですが、
バックアップ目的で(作成日時の記録保存)DAT保管し、別環境で「○月×日の状態のディレクトリ構成を戻し」て再現試験を行う、というような場合にtarを使うので、もうちょっとラクな方法はないかな、と考えています。
ご回答ありがとうございました。
No.1
- 回答日時:
最近あまりUNIXのコマンドラインを扱っていないのでtarの仕様も良く覚えていないのですが...
tarが個別のファイルを固められるとして、こんな感じ(雰囲気)でできないでしょうか?
tar cvfx `ls -F <directory> | grep -v "*\/"`
分かるかた、フォローをお願いします。
# ls -Fの結果がどう評価されるかが心配です。
今の方法でできるのでしたら、それをシェルスクリプトにしてしまえばいいような気がします。
ご回答ありがとうございます。
tar cvf XXXXX
の XXXXX の部分でディレクトリを指定した場合に、ディレクトリの中身のファイルも一緒にアーカイブされてしまう、という仕様に対して、ディレクトリのみをアーカイブできないか、というのが今回模索している点です。
ですので、`ls -F <directory> | grep -v "*\/"`
の結果がディレクトリであれ、ファイルであれ、結果としてはファイルもアーカイブされてしまいます。
やはりtarの仕様上、無理なのでしょうね。
なお、cとxのオプションは一緒に扱えません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Linuxのtarコマンドで同一ディレクトリに解凍するコマンドは何でしょうか? 1 2022/04/25 12:59
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- Android tar.ファイルのインストールについて知りたいです 2 2022/07/23 15:34
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- その他(プログラミング・Web制作) 図に示す階層構造で,現在のディレクトリ(カレントディレクトリという)が*印のディレクトリであるとき, 2 2022/11/16 10:55
- UNIX・Linux JSLinuxについて。 Linuxのこの手順のプログラミングは合っているでしょうか。 ①ホームディ 2 2022/06/20 15:33
- その他(開発・運用・管理) フォルダの中にファルダを作成してファイルを格納するバッチコマンド 1 2022/06/30 11:39
- Excel(エクセル) Excel VBA 3 2023/04/22 10:46
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ホームページのディレクトリを...
-
7zを使うとフォルダの中身がす...
-
ftpのmgetコマンドの自分の格納...
-
拡張子.dどういう意味
-
バッチファイルの記述法とルー...
-
scpによるデータ転送後、ディレ...
-
unzipコマンドでディレクトリな...
-
2TBのUSBメモリを2000円ほどで...
-
#./configureの時点でダメです。
-
linuxコマンド mkdirでディレ...
-
FTPでPUTできない原因は何?
-
make時に出てきたエラーメッセ...
-
Linux シェルスクリプト
-
Linuxコマンドについて
-
[バッチファイル]指定ファイル...
-
tarコマンドのエラーについて
-
lsの4096とディレクトリ容量計...
-
FTPサーバを立ち上げたい
-
curディレクトリ内の削除について
-
シンボリックリンクについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
拡張子.dどういう意味
-
ftpのmgetコマンドの自分の格納...
-
7zを使うとフォルダの中身がす...
-
ホームページのディレクトリを...
-
make時に出てきたエラーメッセ...
-
バッチファルの置き場所
-
linuxコマンド mkdirでディレ...
-
scpによるデータ転送後、ディレ...
-
FTPコマンドのCDについて
-
「ドット(.)」と「¥」の意味...
-
ファイル名で / (スラッシュ...
-
FTPでPUTできない原因は何?
-
"cp -a"と"cp -r"の違い
-
Linuxコマンドについて
-
「照合パターンに合いません」...
-
/(スラッシュ)で区切ったフル...
-
ftpでのフォルダごとの転送はで...
-
tarコマンドのエラーについて
-
シンボリックリンクについて
-
LinuxでSGID設定する際、2775と...
おすすめ情報