# バックアップ `frost backup` は、フォルダを今すぐバックアップします。前回のバックアップから変わった部分だけがアップロードされます。 ## バックアップを実行する ```sh frost backup ``` Frost は、何が変わったか、どれだけアップロードしたか、そして抜き取りチェックの結果を表示します。 ```text ┌ backup sftp://me@nas.local/~/frost │ │ changes 3 added, 1 changed │ files 1,204 (2.1 GB) │ new data 14.2 MB in 9 chunks (9.8 MB uploaded after compression) │ verified ok, 21 random objects re-downloaded and checked │ └ Saved snapshot maple-absurd-3f1c ``` ファイルの内容、サイズ、権限、更新日時のいずれかが変わると、そのファイルは変更されたものとして扱われます。フォルダの更新日時だけが変わった場合は数えません。一時ファイルがしょっちゅう変えてしまうためです。 何も変わっていなければ、Frost は新しいスナップショットを保存しません。 ```text ┌ backup sftp://me@nas.local/~/frost │ │ files 1,204 (2.1 GB) │ verified ok 3h ago, 21 objects checked │ └ Already backed up. No changes detected since snapshot maple-absurd-3f1c, saved 3h ago. ``` Permafrost のアカウント、サーバーのディスク、ローカルドライブがほぼいっぱいになったときなど、ストレージに注意が必要な場合は、バックアップの最後に `storage` の警告が表示されます。 自動バックアップをオンにしていれば、このコマンドを自分で実行することはほとんどありません。詳しくは[自動バックアップ](#scheduling)を参照してください。 ## バックアップをプレビューする ```sh frost backup --dry-run ``` ドライランでは、新しいデータをアップロードするファイルとその合計を一覧しますが、何もアップロードせず、スナップショットも保存しません。`-n` は `--dry-run` の短い形です。 ## オプション | オプション | 動作 | | --- | --- | | `-n`, `--dry-run` | 何をアップロードするかを表示し、実際にはアップロードしません | | `--path ` | いつものフォルダの代わりに、このフォルダをバックアップします。繰り返し指定して複数のフォルダを追加できます | | `--exclude ` | 今回だけ、このパターンも除外します。繰り返し指定して複数のパターンを追加できます | | `--no-verify` | バックアップ後の抜き取りチェックを省略します | 毎回バックアップするフォルダを変えるには、`frost init` をもう一度実行するか、[設定項目](#settings)を参照してください。 ## バックアップされるもの Frost は、通常のファイル、フォルダ、シンボリックリンクを、権限や更新日時とともにバックアップします。 - シンボリックリンクは、リンク先のファイルではなく、リンクそのものとして保存されます。 - ハードリンクされたファイルは、それぞれ別のファイルとしてバックアップされ、復元されます。 Frost は次のものを対象外にします。 - 除外リストにあるもの。詳しくは[ファイルの除外](#excluding-files)を参照してください。 - ソケット、デバイス、パイプ。 - ファイルの所有者、ACL、拡張属性。 - macOS で、iCloud がオンラインにだけ置いているファイル。Frost はこれらをダウンロードせず、スキップして一覧に出します。 - 中断した復元が残した `.frost-partial-...` ファイル。 ## 問題が起きたとき | 起きたこと | Frost の動作 | | --- | --- | | 権限がない、バックアップ中に削除された、iCloud にしかない、などの理由でファイルやフォルダを読めない | スキップして一覧に出します。スナップショットは保存され、`frost status` にスキップした件数が表示されます | | リストにあるフォルダが見つからない (接続していないドライブ上のフォルダなど) | そのフォルダをスキップし、残りをバックアップします。`frost backup` と `frost status` に見つからないフォルダが表示されます | | リストのフォルダが 1 つも見つからない、またはあるのにまったく読めないフォルダがある | バックアップ全体を失敗させます。何も保存していないのに成功したように見えることを防ぐためです | | 使用中のデータベース、動作中の仮想マシンのディスク、ダウンロード中のファイルなど、Frost が読んでいる間にファイルが変わった | バックアップの最後にもう一度読みます。それでも変わり続けている場合、スナップショットには以前のコピーを残し、Frost はそのファイルを一覧に出します。一度も完全な状態でバックアップできていないファイルはスキップします | Frost はファイルシステムやデータベースのスナップショット機能は使いません。常に使用中のファイルは、それを使うプログラムを閉じた状態でバックアップしてください。 macOS では、一部のフォルダを Frost が読むために、あなたの許可が必要です。詳しくは[macOS の権限](#macos-permissions)を参照してください。 ## 抜き取りチェック スナップショットを保存したバックアップのあと、Frost は無作為に選んだチャンクをいくつか (既定では 20 個) ダウンロードして確認します。新しい内容がないバックアップでは、前回のチェックから 1 日以上経っているか、前回問題が見つかった場合にだけチェックし直します。チェックに失敗すると、バックアップはエラーを報告します。詳しくは[バックアップの確認](#checking-backups)を参照してください。 ## 中断したバックアップ 接続が切れた、ノートパソコンを閉じた、`Ctrl+C` を押した、などの理由でバックアップが途中で止まっても、アップロード済みの分が無駄になることはありません。Frost はアップロードしながらチャンクを記録しているので、次のバックアップではそれらをスキップします。 ## スケジュールされたバックアップの前後 スケジュールされたバックアップが 1 時間以内に始まる場合や、直前の 1 時間以内に終わった場合、`frost backup` はそのことを伝え、始める前に確認します。 ```text ┌ backup sftp://me@nas.local/~/frost │ │ A scheduled backup starts in 40m, at 15:00. │ Back up now anyway? [Y/n] ``` そのままバックアップするなら Enter を押し、やめるなら `n` を入力します。間隔が 4 時間未満のスケジュールでは、この時間幅は間隔の 4 分の 1 になります。終わったバックアップが対象になるのは、成功していて、その後に自分でバックアップしていない場合だけです。Frost が確認するのはターミナルで実行したときだけで、プレビューや `--path`、`--exclude` を使ったときは確認しません。 ## 一度に 1 つだけ バックアップやコマンドラインからの復元は、実行中にローカルキャッシュをロックします。別のコマンドが同じキャッシュを必要とすると、Frost は "a backup or restore operation is already in progress; try again when it completes" (バックアップか復元が実行中です。終わってからもう一度試してください) と表示します。相手がスケジュールされたバックアップなら、"a scheduled backup is already running" (スケジュールされたバックアップが実行中です) と、それが始まった時刻を表示します。逆に、スケジュールされたバックアップがロックされたキャッシュに出会った場合は、最大 1 時間待ちます。スナップショットブラウザはキャッシュのロックを解放するので、バックアップ中も開いたままにでき、復元もできます。キャッシュフォルダやコンピュータが違えば、ロックも別です。