本文へスキップ
BecomeCoder

サーバーコース · 第4章 動かして運用する · レッスン20

ディスクとバックアップ ― 容量を見てtarで固める

ブラウザで完結

導入

サーバーはログやデータが日々積み重なっていく生き物です。気づかないうちにディスクが埋まり、新しいファイルが書き込めずサービスが停止する——ディスク満杯は、現場でよく起きる地味だけれど深刻な障害です。空き容量を見張り、大事なデータは定期的にバックアップしておく習慣が欠かせません。

説明

サーバー全体の空き容量を見るのが df(disk free)でした(第2章)。-h(human-readable)を付けて読みやすい単位で確認します。

df -h

Use%(使用率)が高いパーティションがあれば要注意です。では「どこが容量を食っているのか」を調べるのが du(disk usage)です。ディレクトリ配下の使用量を集計します。

du -sh ~

-s(summarize)は合計だけを、-h は読みやすい単位で出す指定です。対象を絞り込めば、「どのディレクトリが太っているか」を特定できます。

du -sh logs
flowchart LR
    Q["ディスクが心配"] --> D1["df -h<br/>全体の空きは?"]
    D1 --> D2["du -sh ディレクトリ<br/>どこが太ってる?"]
    D2 --> B["tar でバックアップ<br/>/ 不要なら削除"]

太っている原因のディレクトリが分かったら、消す前に バックアップ を取っておくのが安全です。複数のファイルを1つにまとめて圧縮するのが tar(tape archive)です。

tar czf backup.tar.gz logs
  • c … 新しいアーカイブを作成(create)
  • z … gzip で圧縮する
  • f … 続けてアーカイブのファイル名を指定する

できあがったアーカイブの中身は、展開しなくても t(list)で一覧確認できます。

tar tzf backup.tar.gz

元に戻す(展開する)ときは x(extract)を使います。

tar xzf backup.tar.gz

1つのファイルだけを手早く圧縮したいときは gzip も使えます。

gzip logs/app.log

バックアップは「取っただけ」では意味がありません。定期的に・自動で取り続け、いざというとき本当に復元できるかを確認しておくことが重要です。次のレッスンで学ぶ cron と組み合わせれば、「毎日決まった時間に自動でバックアップを取る」仕組みが作れます。

やってみよう

df -h でディスク全体の空き状況を確認し、du -sh ~ でホームディレクトリ全体、du -sh logslogs ディレクトリだけの使用量を見比べてみましょう。tar czf backup.tar.gz logs で圧縮アーカイブを作り、tar tzf backup.tar.gz で中身が正しく入っているか確認してください。

演習

logs ディレクトリを、gzip 圧縮付きの tar アーカイブ backup.tar.gz としてまとめてください。

ヒント1を見る

作成は c、gzip圧縮は z、アーカイブ名の指定は f です。まとめて tar czf アーカイブ名 対象 の形。

ヒント2を見る

tar czf backup.tar.gz logs

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

Linux シェル(シミュレート)

ブラウザ内でコマンドを試せる仮想シェルを読み込みます(本物のLinuxカーネルではなく学習用の再現です)。
スクロールして表示された時点でも自動で読み込まれます。