読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】tar の cvf と xvf と tvf、どれがどれかわからん。tar・cpio・dd【LPICレベル1】

17レスカテゴリ:Linux
1: 名無しさん

バックアップで tar czf とか tar xvf とか見るけど、毎回調べてる
cpio と dd も範囲に入ってるらしい

2: 名無しさん

前提のおさらい。cp -r でディレクトリを中身ごとコピーし、-p や -a で属性を保つ

3: 名無しさん

>>1
tar は複数のファイルを1つのアーカイブにまとめる。最初の文字が操作
c 作る(create)
x 取り出す(extract)
t 中身の一覧

4: 名無しさん

>>3
よく組み合わせるもの
f アーカイブのファイル名を次に書く
v 処理したファイル名を表示
z gzip、j bzip2、J xz で圧縮・展開
-C ディレクトリ そこで取り出す

5: 名無しさん

>>4
試した順に
tar cvf proj.tar proj → proj/ 以下のファイル名が出て proj.tar ができた
tar czf proj.tar.gz proj、tar cjf proj.tar.bz2 proj、tar cJf proj.tar.xz proj
tar xzf proj.tar.gz -C out → out/proj/ に展開

6: 名無しさん

>>5
tar tvf proj.tar の出力は ls -l に似た形で、パーミッション・所有者/グループ・サイズ・名前(と日時の列)が出る
-rw-r--r-- user/user 6 … proj/src/a.c

7: 名無しさん

>>4
取り出すときも z を付けなあかんの?

8: 名無しさん

>>7
GNU tar は取り出すときは圧縮の種類を自分で判別するから、tar xf proj.tar.xz でも展開できた。作るときは指定が要る

9: 名無しさん

>>5
特定のファイルだけ取り出すなら名前を後ろに書く。tar xf proj.tar proj/README

10: 名無しさん

>>1
cpio は?

11: 名無しさん

>>10
ファイル名の一覧を標準入力から受け取ってまとめる。だから find と組み合わせる
作る:find proj | cpio -o > proj.cpio
取り出す:cpio -id < proj.cpio(-d で必要なディレクトリを作る)
一覧:cpio -t < proj.cpio

12: 名無しさん

>>11
tar は引数でファイルを指定、cpio は標準入力でファイル名を受け取る、が違いやな

13: 名無しさん

>>1
dd は?

14: 名無しさん

>>13
バイト単位でそのまま写す。ファイルシステムを気にしないから、ディスクやパーティションの丸ごとのコピーやイメージ作りに使う
if= 入力、of= 出力、bs= 1回に読み書きする大きさ、count= 回数

15: 名無しさん

>>14
dd if=/dev/zero of=zero.img bs=1M count=4 → 4+0 records in、4+0 records out と出て、4MiB のファイルができた

16: 名無しさん

>>14
of= にディスクを書くと中身は全部上書きされるから、デバイス名を lsblk で確かめてから

17: 名無しさん

>>3
c・x・t と f、圧縮は z・j・J。cpio は find とパイプ、dd は if・of・bs・count。これで整理できた

管理人のひとこと