バックアップから復元せよ
師範 / 目安 35分
事務局に電話が鳴りっぱなしです。商店街のウェブサイトに載せている会員名簿と店舗情報が、まるごと消えています。
「わしがやった」と鴫原さんが正直に言いました。「整理しようとして、古いほうのフォルダを消したつもりが、生きとるほうを消してしまった。/var/yumesaku/data が空だ」
幸い、毎週バックアップを取る習慣はありました。/var/backups/yumesaku に固めた書庫が残っています。
「ただな、どれが最新か分からん。同じような名前が並んどるし、1つは中身が空っぽかもしれん。それと、去年の失敗があってな。書庫を開いたら今のフォルダの上に散らかったことがある。あれだけは繰り返したくない」
復元は、消えたものを戻す作業であると同時に、戻す前に中身を確かめる作業です。今日はその順番を守ります。
書庫は開く前に覗く
tar は複数のファイルを1つに固める道具です。よく見るのは3つの使い方です。
ターミナル
tar -tzf <書庫>
tar -xzf <書庫>
tar -czf <書庫> <固めたいもの>-tは中身の一覧。開かずに何が入っているかだけを見ます-xは取り出し-cは作成
-z は gzip で圧縮されている書庫、つまり .tar.gz を扱う指定です。-f は続く引数が書庫のファイル名だという指定で、これを忘れると tar は別のものを読みに行きます。
復元でいちばん大事なのが -t です。開いてしまってからでは、上に散らかったものを取り消せません。
ターミナル
tar -tzf /var/backups/yumesaku/<書庫の名前>一覧に出るパスの形もここで確かめます。var/yumesaku/data/... のように先頭のスラッシュが無い相対パスで入っていれば、取り出したときは「いまいる場所からの相対」で展開されます。つまり cd してから開くか、-C で展開先を指定するかで、着地点が変わります。
ターミナル
tar -xzf <書庫> -C <展開先>どれが最新かは中身で決める
ファイル名の日付は、付けた人の申告にすぎません。実際の情報はファイルそのものが持っています。
ターミナル
ls -l /var/backups/yumesaku
ls -lt /var/backups/yumesaku-l は詳しい表示で、大きさと更新時刻が出ます。-t は更新時刻の新しい順に並べる指定です。大きさが極端に小さい書庫は、中身が空か、取り損ねた失敗作である見込みが高いです。名前だけで選ばず、-t で中身を見て、行数を数えて決めてください。
復元は安全な場所で開いてから移す
本番のフォルダの上でいきなり -x すると、取り返しがつきません。実務では、いったん作業用の場所へ取り出し、中身を見てから本番へ移します。移すのは mv です。
ターミナル
mkdir -p /root/fukugen
tar -xzf <書庫> -C /root/fukugen
ls -R /root/fukugen
mv /root/fukugen/var/yumesaku/data/* /var/yumesaku/data/遠回りに見えますが、これが去年の失敗を繰り返さない唯一の方法です。
完成条件
/var/backups/yumesakuの書庫のうち、中身が揃っている最新のものを見極めること/var/yumesaku/dataに、会員名簿kaiin.csvと店舗情報tenpo.csvを復元すること- 復元した名簿には会員が12人ぶん入っていること。空の書庫を開いても、この条件は満たせません
- 選んだ書庫のファイル名を
/root/fukugen-moto.txtに書き残すこと。次に同じことが起きたときの記録です
進め方
開く前に一覧を見る、を必ず守ってください。順番を守ることそのものが今日の課題です。
ヒントは3段階で、①方針、②使うコマンド、③部分解の順に出ます。1つも開けずに通せたら、その問題は自分のものです。
課題
- 書庫を開く前に tar -t で中身を確かめること
- /var/yumesaku/data に kaiin.csv と tenpo.csv を復元すること
- 復元した kaiin.csv に会員が12人ぶん入っていること
- 選んだ書庫のファイル名を /root/fukugen-moto.txt に書き残すこと
ヒント
前のヒントを開くと次が開きます。開かずに解けると未開封クリアです