変更要約: 初版(主題1.02・副主題1.02.1〜1.02.4に対応)
2.2基本的なファイル管理の実行
ファイル・ディレクトリ操作の基本コマンド(ls・file・touch・cp・mv・rm・mkdir・rmdir)、ワイルドカードによるパターンマッチ、find による条件検索と一括操作、tar によるアーカイブと gzip・bzip2・xz による圧縮、dd を学びます。
コピー・移動・削除・検索・アーカイブは、Linux 操作の最初の一歩にして 101 試験の得点源です。1つ1つは単純でも、再帰オプション・ワイルドカード・find との組み合わせまで含めて正確に使い分けられるかが問われます。
2.2.1基本コマンドとワイルドカード
- 個々の操作=ls(一覧)・file(種類の判定)・touch(空ファイル作成/タイムスタンプ更新)・cp(コピー)・mv(移動=名前変更)・rm(削除)・mkdir/rmdir(作成/空のディレクトリ削除)。
- 再帰操作=
cp -r(ディレクトリごとコピー)・rm -r(ディレクトリごと削除。-fで確認省略)。mkdir -pは中間ディレクトリごと作成。 - ワイルドカード(シェルのグロブ)=
*(0文字以上)・?(任意の1文字)・[a-c](集合/範囲)。例rm log?.txt・cp *.conf /backup/。
2.2.2find による検索と一括操作
- find はパス以下を実時間で走査して条件一致を探す:
-name(名前)・-type(f/d)・-size(+10M 等)・-mtime(更新日。-7=7日以内)・-user(所有者)。 - 見つけたファイルへの一括操作=
-exec コマンド {} \;(例find /var/log -name "*.old" -exec rm {} \;)。
2.2.3アーカイブと圧縮
- tar=複数ファイルを1つにまとめる(アーカイブ)。作成
tar cf・展開tar xf・一覧tar tf。圧縮を併用=z(gzip)・j(bzip2)・J(xz)(例tar czf backup.tar.gz /etc)。 - 単体の圧縮=gzip/gunzip(速い・標準)・bzip2(より高圧縮)・xz(最高圧縮・遅め)。いずれも1ファイルを圧縮する(まとめる機能は無い→ tar と組み合わせる)。
- dd=ブロック単位の入出力コピー(
dd if=/dev/sda of=disk.img)。ディスクイメージ作成や ISO の書き込みに使う低レベルツール。
「rmdir は空ディレクトリ専用(中身があれば rm -r)」「tar の z/j/J と gzip/bzip2/xz の対応」「find -mtime -7=7日以内・+7=7日より前」「? は1文字・* は0文字以上」 が定番です。tar czf の直後は作成するアーカイブ名が来る点(tar czf /etc backup.tar.gz は誤り)も頻出のひっかけです。
バックアップの一連の流れで束ねましょう。設定ディレクトリを丸ごと保全するなら tar czf etc-$(date +%F).tar.gz /etc のように c(作成)+z(gzip)+f(ファイル名指定)を組みます。取り出すときは tar xzf、中身の確認だけなら tar tzf です。「先週更新された大きなログだけ退避したい」ならfindの出番で、find /var/log -type f -size +100M -mtime -7 -exec cp {} /backup/ \; のように条件→一括操作をつなぎます。mv はコピー+削除ではなく同一ファイルシステム内なら名前の付け替えなので巨大ファイルでも一瞬です(ファイルシステムをまたぐと実コピーになります)。rm -rf は確認なしの再帰削除=取り消せないため、実行前にパスを二度見する習慣が事故を防ぎます。圧縮率は一般に gzip < bzip2 < xz、速度はその逆で、日常のログローテーションには gzip、配布物の最小化には xz という使い分けが実務の相場です。
| 目的 | コマンド例 | 注意 |
|---|---|---|
| ディレクトリごとコピー | cp -r src/ dest/ | -r が無いとディレクトリは拒否 |
| 空ディレクトリ削除 | rmdir olddir | 中身があれば rm -r |
| gzip 付きアーカイブ作成 | tar czf a.tar.gz dir/ | 展開は xzf・一覧は tzf |
| 7日以内更新のファイル検索 | find . -mtime -7 | +7 は「7日より前」 |
ひっかけ: 「gzip は複数ファイルを1つのアーカイブにまとめられる」は誤りです。gzip/bzip2/xz は1ファイルの圧縮専用で、まとめるのは tar の役割(だから .tar.gz という2段の拡張子になります)。また「rmdir -r で中身ごと削除できる」も誤り=rmdir に再帰オプションはなく、中身があるディレクトリは rm -r を使います。
2.2.4この節のまとめ
- 基本操作=cp/mv/rm/mkdir/rmdir/touch/file+再帰は -r。パターンは \*・?・[ ]
- find=条件検索+-exec 一括操作/tar=まとめる(z/j/J で圧縮併用)/gzip・bzip2・xz=1ファイル圧縮
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. /etc ディレクトリ全体を gzip 圧縮付きのアーカイブ backup.tar.gz にまとめたい。適切なコマンドは?
Q2. /var/log 以下で「7日以内に更新されたファイル」だけを探したい。適切なコマンドは?
Q3. 中にファイルが残っているディレクトリ olddata を丸ごと削除したい。適切なコマンドは?

