はじめに
現在のワークショップの日程が誤って中止され、連絡先ファイルもなくなっています。ネイティブスナップショットが 2 つ残っていますが、新しい方は未承認の下書きです。チームは、後から追加された Paper Folding の活動と未変更の入場メモを維持しながら、承認済みの日程を取り戻す必要があります。
この独立した環境には必要なデータがすべてあり、前のラボのファイルは使いません。既に練習したスナップショットのパスと通常の HDFS ファイル操作を理解していることが前提です。業務要件に合う版を選び、名前を指定した 2 つのオブジェクトを復元し、実際の共有読み取りを確認します。最初から最後まで Terminal を使用してください。読む時間と一般的な間違いの修正を含め、著者の所要時間の目安は 45 分です。
承認済みの版を選んで日程を復元する
このステップでは、2 つの復元ポイントを比較し、公開された活動に合う日程だけを復元します。Terminal を開き、ローカルの作業場所から始めます。
cd /home/labex/project
公開された日程では、部屋 A は Printmaking、部屋 B は Bookbinding です。来場者向けの連絡先は visitors@example.test です。下書きは、新しいという理由だけで承認済みにはなりません。現在のフォルダーに後から追加された late-session.csv には、部屋 C と Paper Folding があり、残す必要があります。notes.txt、用意されたすべてのスナップショット、通常のユーザーの所有権、読み取り専用の共有も維持します。ディレクトリ全体を作り直してはいけません。
現在のファイルとネイティブ復元ポイントを一覧表示します。
hdfs dfs -ls /user/labex/snapshot-workshop/team
hdfs dfs -ls /user/labex/snapshot-workshop/team/.snapshot
現在の日程はありますが、contacts.csv はありません。スナップショット名は morning-approved と afternoon-draft です。名前だけを根拠にせず、実際に含まれている日程を比較します。
hdfs dfs -cat /user/labex/snapshot-workshop/team/.snapshot/morning-approved/schedule.csv
hdfs dfs -cat /user/labex/snapshot-workshop/team/.snapshot/afternoon-draft/schedule.csv
朝の版には Printmaking と Bookbinding があります。午後の版では、部屋 A の活動が Draft Planning に置き換わっています。現在の日程を読みます。
hdfs dfs -cat /user/labex/snapshot-workshop/team/schedule.csv
A,CANCELLED が含まれています。したがって正しい復元ポイントは最新のスナップショットではなく、承認済みの朝の版です。なくなったファイルは別に復元できるため、ツリー全体を置き換える必要はありません。
HDFS の -cp は HDFS のパス間でコピーします。-p はコピー元のタイムスタンプ、所有者、グループ、アクセス許可モードを保持します。-f は指定された既存の宛先の置き換えを許可します。ここでは両方のパスがコースのフォルダー内にあり、あなたが宛先の所有者です。
hdfs dfs -cp -p -f /user/labex/snapshot-workshop/team/.snapshot/morning-approved/schedule.csv /user/labex/snapshot-workshop/team/schedule.csv
実際の analyst ID で、復元した日程を読みます。
sudo -u analyst /usr/local/bin/hdfs dfs -cat /user/labex/snapshot-workshop/team/schedule.csv
Printmaking と Bookbinding が表示されます。現在のフォルダーへの後からの追加が、引き続き利用できるか確認します。
hdfs dfs -cat /user/labex/snapshot-workshop/team/late-session.csv
引き続き Paper Folding が表示されます。コピーでコピー元が見つからないと表示されたら、該当するスナップショットディレクトリを一覧表示してコピー元パスを直してください。空の代替ファイルを作成してはいけません。誤って下書きをコピーした場合は、2 つの履歴を再比較し、正しい名前付きファイルのコピーだけをやり直します。-f を使うコピーは、新しい活動に触れずに、その誤った版だけを置き換えられます。
なくなった連絡先を復元し、読み取り専用の共有を維持する
このステップでは、削除された連絡先を復元し、日程全体を読んで、アクセスの境界を確認します。同じ Terminal で続けてください。
選ぶ前に、履歴にある 2 つの連絡先ファイルを比較します。
hdfs dfs -cat /user/labex/snapshot-workshop/team/.snapshot/morning-approved/contacts.csv
hdfs dfs -cat /user/labex/snapshot-workshop/team/.snapshot/afternoon-draft/contacts.csv
朝の版には必要なアドレス visitors@example.test があり、下書きは仮のアドレスを使っています。承認済みの履歴ファイルを、なくなった現在のパスへコピーします。宛先が存在しなければ、上書きオプションは不要です。
hdfs dfs -cp -p /user/labex/snapshot-workshop/team/.snapshot/morning-approved/contacts.csv /user/labex/snapshot-workshop/team/contacts.csv
コピーが完了していて宛先が既に存在する場合は、先に読みます。内容が誤っている場合は、ステップ 1 と同じ範囲を限定した -cp -p -f を使い、承認済み連絡先をコピー元に、その宛先だけを指定します。ファイルが既に存在するというエラーを解消するために、フォルダー全体を削除してはいけません。
共有ユーザー analyst で、復元した連絡先を読みます。
sudo -u analyst /usr/local/bin/hdfs dfs -cat /user/labex/snapshot-workshop/team/contacts.csv
同じ実際の ID で、未変更のメモと後からの活動を読みます。
sudo -u analyst /usr/local/bin/hdfs dfs -cat /user/labex/snapshot-workshop/team/notes.txt
sudo -u analyst /usr/local/bin/hdfs dfs -cat /user/labex/snapshot-workshop/team/late-session.csv
メモでは静かな部屋を引き続き開放し、後からの活動は Paper Folding のままです。これらは実際に保持されたデータを読む操作です。ローカルにダウンロードするだけでは、この HDFS 上の日程は修復されません。
ディレクトリとすべての現在のファイルの所有者、モードを調べます。-ls -d はディレクトリ自体のエントリを表示します。* を引用符で囲むことで、ローカルシェルではなく HDFS がパスを選択します。
hdfs dfs -ls -d /user/labex/snapshot-workshop/team '/user/labex/snapshot-workshop/team/*'
用意されたディレクトリは 750、ファイルは 640 で、所有者は labex、グループは bigdata です。このモードにより、グループは読み取りとディレクトリの通過ができますが、書き込みはできません。ディレクトリも重要です。そこでグループに書き込みが許されると、個々のファイルが読み取り専用でも、削除や置き換えができてしまいます。
用意された HDFS の -test -w は、その ID に書き込みアクセスがあるかを問い合わせます。書き込みは試みません。analyst はチームディレクトリを変更できないはずなので、次のコマンドは出力なしでゼロ以外の終了コードを返すことが期待されます。
sudo -u analyst /usr/local/bin/hdfs dfs -test -w /user/labex/snapshot-workshop/team
この意図したゼロ以外の結果は、境界の確認に成功したことを意味します。続行してください。無関係の ID は、非公開の共有ファイルを読めてはいけません。次の 2 つのコマンドは、Permission denied で失敗することが期待されます。
sudo -u nobody /usr/local/bin/hdfs dfs -cat /user/labex/snapshot-workshop/team/schedule.csv
sudo -u nobody /usr/local/bin/hdfs dfs -cat /user/labex/snapshot-workshop/team/contacts.csv
誤ったアクセス許可の変更で analyst が読めなくなった場合は、対象のコースオブジェクトだけを修復します。-chgrp bigdata は共有グループを設定し、-chmod 750 はチームディレクトリに、-chmod 640 は名前を指定した現在のファイルに使います。たとえば、次の完全なコマンド例は連絡先とチームディレクトリだけを修復します。
hdfs dfs -chgrp bigdata /user/labex/snapshot-workshop/team/contacts.csv
hdfs dfs -chmod 640 /user/labex/snapshot-workshop/team/contacts.csv
hdfs dfs -chmod 750 /user/labex/snapshot-workshop/team
最後に、現在の日程全体と保持した復元ポイントを一覧表示します。
hdfs dfs -ls /user/labex/snapshot-workshop/team
hdfs dfs -ls /user/labex/snapshot-workshop/team/.snapshot
現在の 4 つのファイルと元の 2 つのスナップショットがすべて残っています。新しい作業を失わず、影響を受けた 2 つのオブジェクトを復元できました。同じ内容と共有の境界を維持できるなら、破損が確認できた現在のファイルを 1 つだけ削除し、履歴からその版をコピーする方法も有効です。この課題は、特定のコマンド表記やエディターを要求していません。
まとめ
業務上の内容に基づいて承認済みの履歴を選び、変更されたファイルと欠落したファイルを復元して、後からの作業と元のスナップショットを維持しました。analyst による実際の読み取りと、無関係のユーザーへの拒否により、共有結果を確認しました。同じ HDFS 内のスナップショットは復元ツールであり、独立したバックアップでも、ストレージ全体の喪失に対する復旧保証でもありません。



