【第8回】運用のプロへの第一歩!シェルスクリプトによるバックアップ自動化入門|新入社員のためのLinux基礎講座

こんにちは、リナックス先生です。ついにこの日がやってきました。全8回にわたってお届けしてきた「新入社員のためのLinux基礎講座」も、今回がいよいよ最終回です!

これまでの連載で、あなたはサーバーを立て、操作し、守り、監視する術を学びました。しかし、現場のエンジニアはこれらの作業を毎日手動で行っているわけではありません。面倒なルーチンワークを機械に任せる技術、それがシェルスクリプト(Shell Script)です。最終回では、学んだ知識を統合し、実務で必須となる「バックアップの自動化」に挑戦して、本連載を締めくくりましょう。

コウ君

先生、ついにここまで来ました!でも、プログラミングなんてやったことない僕に「スクリプト」なんて書けるんでしょうか…?なんだか難しそうで不安です。

リナックス先生

大丈夫よ、コウ君。シェルスクリプトは、これまであなたがターミナルに打ち込んできた「コマンド」を、上から順番に書き並べただけのものなの。特別な魔法じゃないわ。自分の分身を作るような気持ちで、楽しみながら書いていきましょう!

【全8回】新入社員のためのLinux基礎講座:カリキュラム一覧

  • 第1回:ConoHa VPSで始めるAlmaLinux 9環境構築とSSH接続の極意
  • 第2回:現場で迷わない!標準ディレクトリの役割と効率的なファイル操作コマンド
  • 第3回:セキュリティの基本!rootに頼らない適切な権限設計とsudoの運用
  • 第4回:DNF徹底攻略。dnfコマンドの使い方とWebサーバー(Apache)のセットアップ
  • 第5回:firewalldとIPアドレスの理解。サービスを安全に公開するための通信制御
  • 第6回:エンジニアの嗜み「Vim」の操作と、タイムゾーン・ロケール等のシステム設定
  • 第7回:サーバーが重い原因を探る!systemdの操作とリソース監視(top/ps/df)
  • ▶ 第8回:運用のプロへの第一歩。バックアップ処理を自動化するシェルスクリプトの作成(最終回!)

1. シェルスクリプトとは?自動化のメリット

シェルスクリプトとは、OSを操作する「シェル(AlmaLinuxならbash)」に実行させるコマンド群を記述したテキストファイルのことです。なぜこれが必要なのでしょうか?

  • ミスが減る: 手動で何度もコマンドを打つと、必ず打ち間違い(タイポ)が発生します。
  • 時間の節約: 数分かかる作業を、一瞬(一コマンド)で終わらせることができます。
  • 属人化の防止: 手順をファイルとして残すことで、自分以外の人でも同じ作業が可能になります。

2. はじめてのシェルスクリプト作成と実行

まずは世界一簡単なスクリプトを作ってみましょう。Vim(第6回参照)を使って hello.sh を作成します。

#!/bin/bash
# これはコメントです。挨拶を表示して日付を出します。
echo "Hello, Linux World!"
date

【超重要】最初の1行 #!/bin/bash の意味
これは「シバン(Shebang)」と呼ばれ、このファイルを /bin/bash というプログラムで実行してくださいという指定です。Linuxスクリプトには必須の記述です。

実行する方法

作成しただけでは、ただのテキストファイルです。第3回で学んだ権限を付与して、実行可能な状態にします。

# 実行権限を付与
chmod +x hello.sh

# スクリプトを実行
./hello.sh

3. 実践!Apacheログのバックアップスクリプト

それでは、実務を想定したスクリプトを書きましょう。Webサーバーのログ(/var/log/httpd/)を、日付を付けた圧縮ファイルとしてバックアップする仕組みです。

#!/bin/bash

# 1. 変数の設定
BACKUP_DIR="/home/kou/backups"
LOG_DIR="/var/log/httpd"
DATE=$(date +%Y%m%d)

# 2. 保存先ディレクトリがなければ作成
if [ ! -d $BACKUP_DIR ]; then
    mkdir -p $BACKUP_DIR
fi

# 3. ログを圧縮してバックアップ(tarコマンド)
tar -czf $BACKUP_DIR/httpd_log_$DATE.tar.gz $LOG_DIR

# 4. 実行結果の表示
echo "Backup Completed: $BACKUP_DIR/httpd_log_$DATE.tar.gz"

💡 プロのノウハウ:変数の活用
スクリプト内で BACKUP_DIR のように値を定義しておくことで、保存場所が変わっても1箇所を直すだけで済みます。また $(date +%Y%m%d) は、コマンドの実行結果を変数に代入するテクニックで、日付をファイル名に含める際に多用されます。


4. 現場の流儀:定期実行(cron)の設定

スクリプトが完成しても、毎日手動で実行していては「自動化」とは言えません。Linuxには指定した時間にコマンドを自動実行する cron(クロン) という仕組みがあります。

# cronの設定を編集する
crontab -e

エディタが開くので、以下のように記述します(例:毎日深夜3時00分に実行)。

00 03 * * * /home/kou/hello.sh
曜日 実行コマンド
00 03 * * * フルパスで記述

⚠️ トラブルシューティング / 注意点
cronで実行する場合、コマンドは必ず /usr/bin/tar のように「フルパス」で書くか、スクリプト内でパスを明示するのが鉄則です。ログイン時とは環境変数が異なるため、「コマンドが見つからない」というエラーで動かないのが初心者の定番ミスです。


5. 連載の終わりに:学び続けるエンジニアへ

全8回、本当にお疲れ様でした!

第1回の環境構築から始まり、最終回の自動化まで。あなたは今、一通りのインフラ構築・運用の基礎を手にしました。これは、どんなに技術が進歩しても変わらない「エンジニアとしての土台」です。

Linuxの世界は奥深く、今回紹介できたのはほんの一部に過ぎません。クラウド、コンテナ、IaC(Infrastructure as Code)……この先に広がる広大な技術の海へ漕ぎ出す準備は整いました。迷った時は、いつでもこの連載に戻ってきてください。

「手を動かし、失敗し、ログを読む。」
この繰り返しこそが、あなたを一流のエンジニアへと成長させます。またどこかのサーバー(黒い画面)でお会いしましょう!

▼ サーバー構築・開発を学ぶならVPSで ▼

エンジニア必須の環境
「おすすめVPS」

VPSランキングを見る

技術スキルを活かす
「ITエンジニア転職」

転職エージェントを見る

コメント