Bash 第 2 弾: 世代管理つきバックアップ スクリプトを書いて cron で回す

業務データのディレクトリを tar.gz に固めるバックアップ スクリプトを、引数チェック・エラー処理・ログ追記・最新 3 世代の管理まで含めて書き、cron の設定を用意します。運用で「毎晩勝手に動いて、壊れたら気づける」スクリプトの基本形です。

入門約 45 分Azure 実環境

ラボ概要

このラボでは、「サーバー上の業務データを毎晩バックアップして、古いものは消してほしい」と頼まれた運用担当の想定で、実運用に耐えるシェル スクリプトを書きます。

ブラウザで開く IDE のターミナル(Linux)に、バックアップ対象 data/(CSV・JSON・日次レポート)と backup.sh の骨組みがあります。tar で固めるだけなら 1 行ですが、実運用では「引数を間違えたら止まる」「失敗したら終了コードで知らせる」「実行のたびにログが残る」「古い世代を自動で消す」が無いと、気づかないうちにバックアップが止まっていたりディスクが溢れたりします。その 4 点を順に足していきます。

学習目標:

  • set -eu、引数チェック、exit 1 による失敗の明示
  • tar -czf と date で日時つきのアーカイブを作る
  • >> でログを追記し、stat でサイズを記録する
  • ls -t | tail -n +4 | xargs rm で世代管理する
  • crontab の書式(分 時 日 月 曜日)と、出力のリダイレクト
前提知識:
  • 「Bash でログ集計」ラボ相当(パイプ、awk、ファイルへの保存)
完了条件:
  • bash backup.sh data で backups/data-YYYYmmdd-HHMMSS.tar.gz が作られ、backup.log に 1 行追記されること
  • 引数なし・存在しないディレクトリで終了コード 1 になること
  • 5 回実行しても backups/ に 3 世代だけ残ること
  • cron.txt に毎日 2:00 の実行行があること

ラボの構成

  1. 1ブラウザ IDE を開いて対象データと骨組みを確認する
  2. 2TODO 1: 引数チェックとエラー処理
  3. 3TODO 2: 日時つきのアーカイブを作る
  4. 4TODO 3: ログを追記する
  5. 5TODO 4: 最新 3 世代だけ残す
  6. 6実行可能にして cron の設定を書く
  7. 7判定を実行する
  8. 8発展(任意)と考察

詳細な手順は、ラボ開始後に画面内のガイドとして表示されます。

手順のプレビュー(最初のステップ)

1. ブラウザ IDE を開いて対象データと骨組みを確認する

  • ラボ画面の ブラウザ IDE を開く をクリックし、表示されているパスワードでサインインする
  • README.md を読み、Terminal → New Terminal でターミナルを開く
find data -type f
cat backup.sh
  • data/ に 5 ファイル(customers.csv、settings.json、reports/ の 3 日分)があり、backup.sh に TODO 1〜4 があることを確認する
> 注: set -eu は「コマンドが失敗したら止まる」「未定義の変数を使ったらエラー」にする安全装置です。運用スクリプトでは必ず先頭に付けます。
残り 7 セクションの手順は、ラボを開始すると画面内に表示されます

構成図

構成図

参考リソース

このラボが対応する試験の模擬問題集

本番形式の問題で理解度を確認できます。各試験とも先頭 15 問は無料です。

AZ-104Azure Administrator練習テスト 2 回・全 160 問