# ホストされたデータをバックアップしてください

自己ホスト型のBitwardenを使用する場合、データを安全に保つために自分自身でバックアップ手順を実装する責任があります。

## ホストされたデータについて

BitwardenのDockerコンテナは、ホストマシン上のすべての重要なデータを保持するためにボリュームマッピングを使用します。つまり、コンテナを停止してもデータは削除されません。一方、Dockerコンテナは一時的と考えられ、データや状態は保持しません。

すべてのBitwardenデータはホストマシン上の`./bwdata`ディレクトリに保存されており、それはあなたがBitwardenをインストールした場所に対して相対的な位置にあります。

## ホストされたデータのバックアップ

あなたが`./bwdata`ディレクトリ全体をバックアップし、安全に保管することをお勧めします。データ損失の場合、このディレクトリに含まれるデータの全部または一部がインスタンスを復元するために必要になります。

特に定期的にバックアップする必要がある`./bwdata`の重要な部分には以下が含まれます:

- `./bwdata/env` - インスタンスの環境変数、データベースと証明書のパスワードを含む。
- `./bwdata/core/attachments` - インスタンスのボールト アイテムの添付ファイル。
- `./bwdata/mssql/データ` - インスタンスのデータベースデータ。
- `./bwdata/core/aspnet-dataprotection` - フレームワークレベルのデータ保護、認証トークンや一部のデータベース列を含む。

Bitwardenは、実行中に`mssql`データベースコンテナの夜間バックアップを自動的に取ります。

### 毎晩のデータベースバックアップ

Bitwardenは、`mssql`コンテナデータベースの夜間バックアップを自動的に取ります。これらのバックアップは`./bwdata/mssql/backups`ディレクトリに30日間保管されます。

データの損失が発生した場合、`./bwdata/mssql/backups`を使用して夜間のバックアップを復元することができます。

### 夜間のバックアップを復元する

データの損失が発生した場合、以下の手順を完了して夜間バックアップを復元してください。

1. あなたのデータベースのパスワードを`globalSettings__sqlServer__connectionString=...Password=`の値から取得してください。それは`global.override.env`で見つけることができます。
2. `mssql`コンテナのContainer IDを`docker ps`コマンドを使用して識別します。
3. 次のコマンドを実行して、あなたの`mssql` dockerコンテナのためのbashセッションを開きます:

```
docker exec -it bitwarden-mssql /bin/bash
```

あなたのコマンドプロンプトは、識別されたコンテナIDと`bitwarden-mssql`コンテナが一致するはずです。
4. コンテナ内で、復元したいバックアップファイルを探してください。

> [!NOTE]
> コンテナ内のバックアップディレクトリは、ホストディレクトリからボリュームマップされています。ホストマシン上の`./bwdata/mssql/backups`は、コンテナ内の`etc/bitwarden/mssql/backups`にマップされます。

たとえば、ファイル`/etc/bitwarden/mssql/backups/vault_FULL_20201208_003243.BAK`は、2020年12月8日の午前12時32分に取られたバックアップです。
5. 次のコマンドで`sqlcmd`ユーティリティを開始します：

```bash
/opt/mssql-tools18/bin/sqlcmd -S localhost -U <sa> -P <sa-password> -C
```

ここで、 と は、`global.override.env`で見つけた`ユーザー=` と `パスワード=` の値と一致します。
6. `sqlcmd`ユーティリティに一度入ると、バックアップには2つのオプションがあります:

 1. **オフライン復元**（推奨）

次のSQLコマンドを実行します:

```
1> use master
2> GO
1> alter database vault set offline with rollback immediate
2> GO
1> restore database vault from disk='/etc/bitwarden/mssql/backups/vault_FULL_{Backup File Name}.BAK' with replace
2> GO
​1> alter database vault set online
2> GO
1> exit
```

復元を完了するために、Bitwardenインスタンスを再起動してください。
 2. **オンライン復元**

次のSQLコマンドを実行します:

```
1> RESTORE DATABASE vault FROM DISK = '/etc/bitwarden/mssql/backups/vault_FULL_20200302_235901.BAK' WITH REPLACE
2> GO
```

復元を完了するために、Bitwardenインスタンスを再起動してください。