はじめに
コンピューティングの世界では、データは非常に貴重です。ハードウェア障害、誤削除、悪意のある攻撃などによるデータの損失は、壊滅的な結果をもたらす可能性があります。データのレジリエンス(resilience)とは、障害発生時にデータが保護され、利用可能であり、復旧できることを保証する実践のことです。
この実験(Lab)では、Linux システムにおけるデータのレジリエンスの 2 つの基本的な概念、すなわちバックアップの作成とファイル整合性の検証について紹介します。これらのタスクを実行するために、標準的な Linux コマンドラインツールを使用します。
以下の方法を学びます。
tarコマンドを使用して、重要なファイルの圧縮アーカイブ(バックアップ)を作成する方法。- ファイルを削除して、データ損失シナリオをシミュレートする方法。
- バックアップアーカイブからデータを復元する方法。
md5sumを使用してチェックサムを作成し、ファイルが改変または破損していないことを検証する方法。
この実験(Lab)の終わりには、システム管理者や開発者にとって不可欠なスキルに関する実践的なハンズオン経験を積むことができます。
tar で重要なファイルのローカルバックアップを作成する
このステップでは、tar (Tape Archive) ユーティリティを使用してディレクトリの圧縮バックアップを作成する方法を学びます。tar は、ファイルやディレクトリを 1 つのアーカイブファイルにバンドルするための強力で広く使用されているコマンドであり、その後、スペースを節約するために圧縮できます。これは、ローカルバックアップを作成するための一般的な方法です。
まず、セットアップスクリプトによって作成されたファイルを確認しましょう。すべての作業は ~/project ディレクトリで行われます。
~/project ディレクトリの内容を一覧表示します。
ls -R ~/project
critical_data ディレクトリとそのファイル、および空の backups ディレクトリが表示されるはずです。
/home/labex/project:
backups critical_data
/home/labex/project/backups:
/home/labex/project/critical_data:
config.txt user_data.csv
次に、critical_data ディレクトリの圧縮バックアップを作成し、backups ディレクトリに保存しましょう。以下のオプションを持つ tar コマンドを使用します。
c: 新しいアーカイブを作成します。z: gzip でアーカイブを圧縮します。これにより、ファイルに.gz拡張子が付きます。v: 詳細表示モード。処理中のファイルを一覧表示します。f: 作成するアーカイブのファイル名を指定します。-C: アーカイブを作成する前に指定されたディレクトリに変更します。これにより、絶対パスではなく相対パスを格納し、バックアップの移植性を高め、展開時のネストされたディレクトリ構造を回避します。
ターミナルで次のコマンドを実行します。
tar -czvf ~/project/backups/backup.tar.gz -C ~/project critical_data
コマンドは、アーカイブに追加しているファイルの名前を出力します。
critical_data/
critical_data/config.txt
critical_data/user_data.csv
これでバックアップが正常に作成されました。確実にするために、backups ディレクトリの内容を一覧表示できます。
ls ~/project/backups
新しいバックアップファイルが表示されるはずです。
backup.tar.gz
データ損失をシミュレートし、バックアップから復元する
このステップでは、一般的な災害シナリオである意図しないデータ削除をシミュレートします。その後、前のステップで作成したバックアップファイルを使用して、失われたデータを復元します。
まず、critical_data ディレクトリを完全に削除して、データ損失をシミュレートしましょう。rm -rf コマンドは非常に強力であり、注意して使用する必要があります。これは、ディレクトリとファイルを再帰的に (-r) かつ強制的に (-f) プロンプトなしで削除します。
ディレクトリを削除するには、次のコマンドを実行します。
rm -rf ~/project/critical_data
次に、プロジェクトディレクトリの内容を一覧表示して、ディレクトリがなくなったことを確認します。
ls ~/project
critical_data ディレクトリがなくなっていることがわかります。
backups
心配しないでください!だからこそバックアップがあるのです。それでは、backup.tar.gz アーカイブからディレクトリを復元しましょう。再び tar コマンドを使用しますが、オプションは異なります。
x: アーカイブからファイルを展開します。z: gzip でアーカイブを解凍します。v: 詳細表示モード。展開中のファイルを表示します。f: 使用するアーカイブのファイル名を指定します。-C: ファイルを展開するディレクトリを指定します。~/projectに展開します。
次のコマンドを実行してデータを復元します。
tar -xzvf ~/project/backups/backup.tar.gz -C ~/project
展開されるファイルの出力が表示されます。
critical_data/
critical_data/config.txt
critical_data/user_data.csv
tar が元のディレクトリ構造を保持していることに注意してください。ただし、バックアップ作成時に -C オプションを使用したため、絶対パスのプレフィックスはありません。復元が成功したことを確認しましょう。再度 ~/project ディレクトリの内容を一覧表示します。
ls -R ~/project
critical_data ディレクトリとそのすべての元のファイルが復元されているはずです。
/home/labex/project:
backups critical_data
/home/labex/project/backups:
backup.tar.gz
/home/labex/project/critical_data:
config.txt user_data.csv
シミュレートされたデータ損失イベントから正常に復旧しました。
チェックサムでファイルの整合性を監視する
このステップでは、ファイルの整合性を監視する方法を学びます。バックアップはデータ損失から保護してくれますが、ファイルが微妙に破損したり悪意を持って変更されたりしたかどうかは教えてくれません。チェックサム(またはハッシュ)は、ファイルのユニークなデジタル指紋です。ファイル内のビットが 1 つでも変更されると、チェックサムは完全に変化します。これにより、ファイルの整合性を検証するための優れたツールとなります。
MD5 チェックサムを計算する md5sum コマンドを使用します。SHA-256 (sha256sum) の方が暗号学的に安全ですが、md5sum はシンプルで、このデモンストレーションには十分です。
まず、重要なファイルのチェックサムを生成し、参照ファイルに保存しましょう。
md5sum ~/project/critical_data/* > ~/project/checksums.md5
次に、作成したばかりの checksums.md5 ファイルの内容を表示します。
cat ~/project/checksums.md5
出力には、各ファイルの一意のチェックサムが表示されます。あなたのチェックサム値はこれらと同一になります。
d7118547a95c5470575962481c2e358c /home/labex/project/critical_data/config.txt
b643407358b9de495715f13432577d33 /home/labex/project/critical_data/user_data.csv
次に、ファイルの 1 つに不正な変更をシミュレートしましょう。config.txt ファイルにコメントを追加します。
echo "## This is a change" >> ~/project/critical_data/config.txt
ファイルが変更されました。ファイルリストを単に見ている観察者には、何も問題がないように見えます。しかし、チェックサムファイルを使用して変更をチェックできます。-c オプションは、md5sum にリストに対してファイルをチェックするように指示します。
md5sum -c ~/project/checksums.md5
コマンドは、checksums.md5 にリストされている各ファイルをディスク上の現在の状態と比較してチェックします。出力は、config.txt が変更されたことを明確に示します。
/home/labex/project/critical_data/config.txt: FAILED
/home/labex/project/critical_data/user_data.csv: OK
md5sum: WARNING: 1 computed checksum did NOT match
この「FAILED」ステータスは、ファイルが元の信頼できる状態ではなくなったことをすぐに警告します。これは、データの破損やセキュリティ侵害を検出するための強力な手法です。
まとめ
この実験を完了された皆さん、おめでとうございます!Linux 環境における基本的なデータ回復力のプラクティスについて、実践的な経験を積むことができました。
この実験では、以下のことを学びました。
- バックアップの作成:
tarコマンドを使用して、重要なファイルの圧縮バックアップを作成しました。これはデータ損失を防ぐための基本的なスキルです。 - データの復元: データ損失シナリオをシミュレートし、
tarアーカイブからファイルを正常に復元しました。これにより、完全なバックアップとリカバリのサイクルを実証しました。 - ファイルの整合性の検証:
md5sumを使用してファイルのチェックサムを生成およびチェックしました。これは、不正な変更やデータの破損を検出するための強力な方法です。
これらのスキルは、あらゆるシステムのセキュリティと可用性を維持するために不可欠です。定期的なデータのバックアップと整合性の検証は、責任あるシステム管理と堅牢なアプリケーション展開の重要な要素です。



