バックアップと復元

バックアップには、専用のアプリがあります。システムに同梱され、導入時に設定されるため、買うものも設定するものもありません。このまとまりでは、何が保存され、いつ動き、いざというときにどうやってすべてを取り戻すかを説明します。このまとまりの内容は、すべて Basic に含まれます。

1

バックアップと復元のためのアプリ

アプリの名前は「Ticket System Backup & Restore」です。チケットシステムの隣にあり、デスクトップに専用のショートカットができます。

Windows 版と Linux 版があります。同じアプリを、それぞれの OS 向けに作ったものです。

タブは6つです。「Restore」は手元のバックアップを並べ、「Create Backup」は新しく作り、「Schedule」は時刻を扱い、「Encryption」はリカバリーキーを示し、「Settings」は保存先を示し、「Log」は記録を示します。

設定は、すでに埋まっています。初回の起動時に、アプリがチケットシステムの場所を自分で調べます。

バックアップの保存先は「Backup directory」にあります。別のドライブなどに変更できます。

Windows では、アプリは起動するときに管理者の権限を求めます。その設定は、そのコンピューターのすべての管理者に適用され、「%ProgramData%\SMITEY\backup-app」に保存されます。

時刻、大きさ、種類、暗号化が並んだ5件のバックアップがある「Restore」のタブ。
赤い枠は「Encryption」の列に付いています。新しいバックアップは「.smbk」で終わり、「Encrypted」と表示されます。ZIP 形式の古いバックアップは「Not encrypted」と表示されます。「Type」の列が、そのバックアップが予定によるものか、手で作ったものか、更新の前に取ったものかを示します。画像を原寸で開く
バックアップの保存先とデータベースの情報がある「Settings」のタブ。
赤い枠は、PostgreSQL コンテナーの名前に付いています。その下のほうに、一緒に保存されるボリュームが並びます。画像を原寸で開く
2

予定は、導入した時点から動きます

はじめる前に: Windows では、アプリは常に管理者の権限で起動し、その権限で予定を登録します。サインインしている利用者がいない状態でタスクを動かすことを Windows が認めない場合、タスクはサインインに結び付いたままになり、アプリがその旨を伝えます。

導入時に、毎日のバックアップが自動で設定されます。チケットシステムのタイムゾーンで23時に動きます。

予定は OS の中にあります。Windows ならタスクスケジューラ、Linux なら cron です。そのため、バックアップのためだけに動くサービスはありません。

バックアップに、誰かがサインインしている必要はありません。誰もサインインしないサーバーでも動きます。

ボタンの下の行が、そのタスクが本当に OS に存在するかを伝えます。チェックが入っているだけでは、何が保存されたかが分かるにすぎません。

バックアップは5つの段階で保持されます。14日、4週、12か月、4四半期、5年です。ある段階で、その期間の中で最も新しいものである限り、そのバックアップは残ります。

数えるのはファイルではなく、暦の日です。1日に2件のバックアップがあっても、1日です。

手で作ったバックアップが、自動で削除されることはありません。「Keep manual」の 0 は、その意味です。

予定を変更した場合、その変更は更新をはさんでも残ります。導入の処理が予定を設定するのは、一度も予定を設定したことがない場合だけです。バックアップをオフにしていれば、オフのままです。「Remove all scheduled tasks」も持続します。そのあとの更新で、予定がもう一度作られることはありません。

「Daily」にチェックが入り、時刻が 23:00 になっている「Schedule」のタブ。
赤い枠は「Daily」と時刻に付いています。上の文が、2つの仕組みを挙げています。タスクスケジューラと cron です。画像を原寸で開く
ボタンの下の「Registered with the operating system: yes (Daily)」の行。
この行は、起動のたびに確認されます。「NO」と出ていれば、自動では何も動きません。その場合は、管理者として「Apply schedule」を実行してください。画像を原寸で開く
6つの保持期間の欄。14、4、12、4、5、0 です。
赤い枠は段階に付いています。「Keep manual (0 = keep all)」は、手で作ったバックアップを残すという意味です。画像を原寸で開く
「Apply schedule」の後の「Schedule」タブ。下に「02:00 (America/New_York)」と「Registered with the operating system: yes (Daily)」が表示されています。
赤枠は「Apply schedule」と、その下の行を囲んでいます。かっこ内は、チケットシステムのタイムゾーンです。時刻はこのタイムゾーンで適用され、コンピューターのタイムゾーンではありません。画像を原寸で開く
3

バックアップに何が入るか

バックアップには、システムの状態を作るものがすべて入ります。データベース、添付ファイル、アーカイブ、そして鍵です。入らないのは、SMITEY の外にあるデータベースだけです。

鍵は、見落としやすい部分です。保存された認証情報、たとえばメールアカウントのものを復号します。鍵がなければ、復元しても認証情報は使えないままです。

新しいバックアップは、「.smbk」で終わる暗号化された1つのファイルです。中に、ボリュームごとのファイル、内容の一覧、含まれている場合はテキストファイルとしてのデータベースが入ります。

その間も、システムは動き続けます。エージェントがバックアップに気づくことはありません。

「Estimate size」が、データベースの大きさを先に伝えます。添付ファイルのボリュームは、それに加わります。バックアップは圧縮されません。

上書きされるものはありません。バックアップはどれも独立したファイルで、古いものを消すのは片づけの処理だけです。

バックアップを読めるのは管理者だけです。インストールフォルダーにある設定ファイルと、最初のサインイン情報のファイルも同じです。インストーラーと各更新が、これらの権限を自動で設定します。

データベースが SMITEY のコンテナではなく、専用のサーバーで動いている場合、アプリはそれをバックアップできません。その場合は、ご自身のツールでバックアップしてください。このときバックアップに入るのは、添付ファイル、アーカイブ、鍵だけで、いつもどおり暗号化されます。更新はそのようなデータベースを自分で見つけ、アプリを切り替えます。それまでは、そのような環境で毎日のバックアップは失敗します。先に手で切り替えた場合は別です。コマンドラインでは、「config --database external」で手で切り替えることもできます。「config --database bundled」で元に戻せます。

詳しくはこのカードで: 暗号化とリカバリーキー

「Estimate size」と「Create backup now」のボタンがある「Create Backup」のタブ。
赤い枠は2つのボタンに付いています。上の文が、何が含まれるかを挙げています。画像を原寸で開く
作られたファイルの完全な経路が書かれた、下部のメッセージ。
作成後、ウィンドウの下部にファイル名が表示されます。時刻が、名前の一部になっています。画像を原寸で開く
4

暗号化とリカバリーキー

はじめる前に: リカバリーキーはサーバーの外に保管してください。これがないと、サーバーを失ったときにどのバックアップも開けません。誰にも代わりに復旧してもらうことはできません。

新しいバックアップはすべて暗号化されます。予定によるバックアップも、手で作ったバックアップも、更新の前のバックアップも同じです。何も有効にする必要はありません。

バックアップは AES-256 で暗号化されます。キーはインストール時に自動で作られます。既存の環境では、暗号化を備えたバージョンへの最初の更新で作られます。キーはサーバー上に保護された状態で保存されます。読み取れるのは管理者だけです。

これで、サーバーの外にあるコピーが守られます。ネットワークドライブ、USB メモリ、オンラインストレージでバックアップを見つけた人も、キーがなければ読めません。サーバーそのものを掌握している人は、キーも手にしています。

リカバリーキーは、書き留められる形にした同じキーです。「SMBK-」で始まります。「Encryption」タブと、インストールフォルダーのファイル「SMITEY-credentials.txt」にあります。そのファイルを削除した場合でも、キーは「Encryption」タブで確認できます。

「Copy」はキーをクリップボードに入れます。「Save to file...」は、キー ID と日付を付けてテキストファイルに保存します。たとえばパスワードマネージャーや、金庫に入れた紙に保管してください。

キーを保管したことを確認するまで、アプリは上部に黄色のバーを表示します。確認するには、「I stored the key outside this server」をクリックし、質問に「Yes」と答えます。バーはそこで消えます。タブには、確認した日時が表示されます。

キー ID は、バックアップがどのサーバーのものかを示します。バックアップがこのサーバーのものでない場合、アプリはそのキー ID を示します。続いて、対応するリカバリーキーを求めます。

アプリがキーを読み取れない場合、バックアップを作りません。暗号化なしのバックアップも作りません。その場合、「Encryption」タブに、キーを読み取れないと表示されます。キーのファイルがまったくない場合、次のバックアップで新しいキーが作られます。新しいキーも保管する必要があるため、黄色のバーが再び表示されます。古いバックアップは、これまでどおり古いリカバリーキーでしか開けません。

ZIP 形式の古いバックアップは暗号化されていません。復元は引き続きできます。タブに、その件数が表示されます。クリーンアップは、ほかのバックアップと同じ規則でそれらを削除します。

デスクトップのないサーバーでは、「key --show」がコマンドラインで同じ内容を表示します。

詳しくはこのカードで: すべてを取り戻す, デスクトップのないサーバーで

リカバリーキー、キー ID、3つのボタンがある「Encryption」タブ。上部に黄色のお知らせバーがあります。
赤い枠は、お知らせバー、キーとキー ID、そして「I stored the key outside this server」に付いています。画像のキーはテスト環境のものです。画像を原寸で開く
確認後の同じタブ。お知らせバーはありません。
上の枠は確認の日時に付いています。下の枠は、まだ暗号化されていないバックアップの件数を示します。画像を原寸で開く
5

すべてを取り戻す

はじめる前に: 復元は、今の状態を上書きします。選んだバックアップより後に作られたものは、すべてなくなります。

「Restore」のタブで、戻したいバックアップを選びます。そのあと「Restore」をクリックします。

アプリは、まず確認します。何が起きるかを伝えます。今の状態が上書きされること、そしてアプリがコンテナを再起動することです。今の状態に匿名化された人がいる場合は、2つ目の質問が続きます。その人数を示し、復元の後にもう一度匿名化するかどうかを尋ねます。「Yes」があらかじめ選ばれています。「No」を選ぶと、この手順なしでバックアップが復元されます。代わりにウィンドウを閉じると、何も復元されません。

「Wipe target volumes before restore」にチェックを入れると、先にボリュームを空にします。これで、バックアップの時点になかったファイルが残ることはありません。

手順は「Log」のタブに表示されます。そこで、アプリが何をしたかを順に確認できます。2つ目の質問に「Yes」と答えた場合は、チケットシステムが次の夜間の実行でもう一度適用する匿名化の数が、終わりのほうの行に表示されます。引き継げなかった場合は、代わりにログに警告が表示されます。警告があった場合は、ウィンドウ下部のステータス行にその数が表示されます。

バックアップにデータベースが入っている場合、状態がそのまま戻ります。チケット、コメント、履歴、添付ファイル、記録した時間、ナレッジベースが、バックアップの時点のとおりに戻ります。

そのあと、システムはまた使えるようになります。小さな環境なら、1分もかかりません。

バックアップにデータベースが入っている場合、データベースは、すべて戻るか、まったく戻らないかのどちらかです。ボリュームは、そのあとに続きます。ボリュームで失敗した場合、データベースはすでに戻っていますが、ファイルが欠けていることがあります。どの段階で失敗したかは、「Log」タブに表示されます。復元に失敗した場合でも、アプリはそのあと必ずコンテナを再び起動します。

古いバージョンのバックアップは、新しいバージョンに復元できます。次に起動するとき、システムがデータベースを自分のバージョンに合わせます。

満足度調査の同意と配信停止は、確認なしで引き継がれます。2つ目の質問に「No」と答えた場合も同じです。アプリは、復元の前に、稼働中の環境からそれらを読み取ります。そのあと「Log」タブの1行に、件数が表示されます。たとえば「12 consent and unsubscribe record(s) were carried over.」です。チケットシステムは、最初の起動でそれらを取り込みます。そのため、バックアップのあとに行われた同意や配信停止も有効のままです。引き継ぎに失敗すると、ログに警告が表示されます。それでも、復元は成功として扱われます。

アプリはまず、暗号化されたバックアップ全体を調べます。その間、ステータス行に「Checking the encrypted backup before anything is changed...」と表示されます。調べ終えてから、コンテナを止めます。ファイルが壊れている、または改ざんされている場合は、そこで止まり、「The backup file is damaged. Nothing was changed.」と表示します。

バックアップが別のサーバーのものである場合、アプリはそのサーバーのリカバリーキーを求めます。これは質問のあとに行われます。ウィンドウ「Recovery key needed」に、バックアップのキー ID が示されます。このサーバーのキーがない場合も、同じウィンドウが表示されます。

入力ミスは、何かが変わる前に気づきます。ステータス行には「The recovery key has a typing error. Check each character.」と表示されます。そのあと、ウィンドウがもう一度たずねます。キーが別のバックアップのものである場合、ステータス行には「This recovery key does not belong to this backup.」と表示されます。「Cancel」を押すと、アプリは止まり、「Restore cancelled. Nothing was changed.」と表示します。

アプリは、入力されたキーを引き継ぎません。自分のキーを使い続けます。新しいバックアップは、これまでどおりこのサーバーのキーで作られます。新しいサーバーで復元した場合は、そのサーバーのリカバリーキーも保管してください。

データベースの入っていないバックアップが戻すのは、添付ファイル、アーカイブ、鍵だけです。既存の鍵はそのまま残ります。データベースは変わりません。アプリは復元の前にそれを伝え、たずねます。「No」を選ぶと何も変わりません。

インストールが独自のデータベースを使う設定になっている場合、バックアップにデータベースが入っていても、アプリはデータベースの部分を飛ばします。たとえば古いバックアップがこれに当たります。アプリは事前にたずねます。「No」を選ぶと何も変わりません。

一覧で選ばれたバックアップと、その下のチェックと「Restore」のボタン。
赤い枠は、チェックと「Restore」に付いています。行が選ばれていないと、ボタンは使えません。画像を原寸で開く
「Yes」と「No」のボタンがある、復元の前の確認。
確認の文が、2つの結果を挙げます。今の状態が上書きされること、そしてコンテナが再起動されることです。画像を原寸で開く
復元後の記録。いちばん下に「Restore complete.」のメッセージがあります。
すべての手順が、時刻とともに並びます。最後にアプリが「Restore complete.」と伝えます。画像を原寸で開く
「Yes」と「No」のボタンが付いた2つ目の質問「6 person(s) were anonymized in the current system.」。
赤枠は質問と「Yes」を囲んでいます。「Yes」が最初から選ばれています。数字は、今の状態で匿名化されている人の数です。画像を原寸で開く
復元後のステータス行:「1 warning(s) while carrying over anonymizations and survey consents. See the Log tab.」
赤枠はステータス行を囲んでいます。この行は警告の数だけを示します。何が起きたかの詳細は「Log」タブにあります。画像を原寸で開く
バックアップのキー ID、入力欄、「OK」と「Cancel」のボタンがあるリカバリーキーの入力画面。
赤い枠は、キー ID が書かれた質問と入力欄に付いています。キーを入力するとき、ハイフン、空白、大文字と小文字は区別されません。画像のキーはテスト環境のものです。画像を原寸で開く
6

デスクトップのないサーバーで

サーバーには、デスクトップがないことがよくあります。そのため、同じアプリはコマンドとしても使えます。

日々の運用で必要なコマンドは5つです。「backup」が保存し、「list」が手元のバックアップを並べ、「restore」が1件を戻し、「schedule」が時刻を決め、「config」が設定を示します。キーのために、さらに「key」と「decrypt」があります。

その裏にあるのは、画面と同じアプリです。別のことをする2つ目の経路は、ありません。

アプリは「/opt/smitey/Backup」にあります。「sudo」を付けて呼び出し、コマンドを続けます。コンテナは「root」で動くため、バックアップにも同じ権限が必要です。

下の6つの枠は、そのままコピーできます。日々の運用で本当に必要なものが入っています。

復元は、ここでも確認します。「--yes」を付けたときにだけ実行されます。そのとき、今の状態の匿名化も引き継がれます。ウィンドウで「Yes」を選んだときと同じです。「--no-reapply」を付けると、この手順なしで実行されます。

これらを読み直すためのファイルが、サーバーにあります。名前は「BACKUP-RESTORE.txt」で、「/opt/smitey」にあります。予定、すべてのコマンド、戻し方を、自分のペースでもう一度たどれます。ファイルにはドイツ語版と英語版があります。導入のときにドイツ語を選んだ場合はドイツ語版、それ以外の場合は英語版が入ります。どちらの版も「/opt/smitey/docs」にもあります。

「key --show」は、リカバリーキー、キー ID、暗号化されていないバックアップの件数を示します。キーをサーバーの外に保管したら、「key --confirm-stored」でそれを確認します。

別のサーバーのバックアップは、「--key-file」で復元します。指定したファイルに、リカバリーキーが入っています。「Save to file...」で作ったファイルも使えます。ファイルの代わりに、環境変数「SMITEY_BACKUP_KEY」を使うこともできます。「sudo」を使う場合は、プログラムの直前に置きます。つまり「sudo SMITEY_BACKUP_KEY=<キー> /opt/smitey/Backup/TicketSystemBackup restore …」です。この場合、キーはシェルの履歴に残ります。キーが合わない場合、何も変わりません。

「decrypt」は、バックアップの内容を暗号化なしのファイルとして、空のフォルダーに書き出します。このファイルは暗号化されていません。パスワードと個人データが入っています。作業が終わったら、すぐに削除してください。

手元のバックアップを表示する

sudo /opt/smitey/Backup/TicketSystemBackup list

各行に、時刻、理由、大きさ、ファイル名が並びます。画面に出る一覧と同じものです。

予定を表示する

sudo /opt/smitey/Backup/TicketSystemBackup schedule --show

最初の行が、設定されている時刻をタイムゾーンとともに示します。最後の行が、そのタスクが本当に OS に存在するかを示します。「NO」と出ていれば、自動では何も動きません。

予定を変更する

sudo /opt/smitey/Backup/TicketSystemBackup schedule --daily 23:00 --keep 14

時刻は、チケットシステムのタイムゾーンで扱われます。「--keep」で、毎日のバックアップを何件残すかを指定します。「schedule --off」で、毎日のバックアップを止めます。

今すぐバックアップを作る

sudo /opt/smitey/Backup/TicketSystemBackup backup

このバックアップは「Manual」として扱われます。手で作ったバックアップが、自動で削除されることはありません。

リカバリーキーを表示する

sudo /opt/smitey/Backup/TicketSystemBackup key --show

最後の行に、キーを保管したことをすでに確認したかどうかが表示されます。このコマンドはキーを作りません。

別のサーバーのバックアップを復元する

sudo /opt/smitey/Backup/TicketSystemBackup restore <file>.smbk --yes --key-file /root/recovery-key.txt

<file> を、バックアップの名前またはパスに置き換えます。ファイル「/root/recovery-key.txt」は、あらかじめ自分で作っておきます。ここにリカバリーキーが入っています。「Save to file...」で作ったファイルも使えます。

Linux サーバーのコマンドライン。「list」の一覧と、その下に「key --show」の出力があります。
上の「list」が、バックアップを表示しています。ZIP 形式の古いバックアップには、「(Not encrypted)」と付いています。その下の「key --show」が、リカバリーキー、キー ID、暗号化されていないバックアップの件数を示します。画像のキーはテスト環境のものです。画像を原寸で開く
7

バックアップは、同じ機械の上にあります

はじめる前に: システムの隣にあるバックアップは、ディスクの故障からは守ってくれません。ファイルを定期的に、別の場所へ複製してください。

バックアップは、設定したフォルダーの中のファイルです。そのフォルダーは、チケットシステムと同じ機械の上にあります。

よくある場面には、これで十分です。誤って削除したデータ、失敗した更新、データの誤りは、どれも対応できます。

ディスクが壊れた場合には、役に立ちません。ディスクがなくなれば、バックアップも一緒になくなります。

そのため、ファイルを別の場所に複製してください。ネットワークドライブ、2台目のサーバー、ネットワーク上の保管先で足ります。

複製したファイルは、どのサーバーでも読み戻せます。別のサーバーでは、そのためにリカバリーキーが必要です。「Import backup file…」で、ファイルを一覧に戻せます。

コピーは暗号化されています。リカバリーキーがなければ、誰も読めません。ですから、キーをコピーの隣に置かないでください。「.zip」で終わる古いバックアップは暗号化されていません。

「Backup directory」の欄がある「Settings」のタブ。
「Backup directory」の欄が、ファイルの場所を示します。定期的に別の場所へ複製すべきなのが、このフォルダーです。画像を原寸で開く
8

更新の前に、システムが自分で保存します

更新は、その前に独自のバックアップを取ります。これは予定とは関係なく行われ、チェックを入れる必要もありません。

保存するものは、いつもと同じです。データベース、添付ファイル、アーカイブ、鍵です。データベースが SMITEY の外で動いている場合、更新が保存するのは添付ファイル、アーカイブ、鍵だけです。

このバックアップは、アプリ「Ticket System Backup & Restore」が取ります。ほかのバックアップと同じように暗号化され、同じフォルダーに置かれます。一覧では、種類が「Update」です。この種類のバックアップは、新しい3件が残ります。古いものは、アプリが自分で削除します。

更新の前の案内が、その旨を伝えます。自分で先に保存することを、覚えておく必要はありません。

このバックアップに失敗した場合、更新は何かが置き換えられる前に止まります。SMITEY の外にあるデータベースは、更新を止めません。更新はそのとき、毎日のバックアップもそのデータベースを除くように、アプリを切り替えます。そのデータベースは、ご自身のツールでバックアップしてください。

詳しくはこのカードで: ボタン一つで更新する

バックアップについての注記がある、更新の前の確認。
「A full backup is taken automatically beforehand」の一文が、確認の一部になっています。バックアップは、何かが置き換わる前に動きます。画像を原寸で開く

スクリーンショットはバージョン 1.3.1 のものです。ここに写っている画面は、バージョン 1.13.3 まで変わっていません。見た目で違うのは、サイドバー下部のバージョン番号だけです。