Dreaming in Greater Boston

ホームラボサーバーのバックアップ

1 はじめに

前回の記事 ではMini PCを使ってホームラボサーバーをたてました。今回はそのバックアップについてです。

2 3-2-1ルール

バックアップの3-2-1ルールをご存知でしょうか。

  • 3 - 3つのコピー(オリジナル含む)を持つ
  • 2 - 2種類の媒体にコピーを持つ
  • 1 - オフサイトコピーを一つ持つ

というバックアップのベストプラクティスです。そこまでやるのはマニアックですが、大事なデータが無くなってから泣いても仕方がないので、これを満たすバックアップを考えます。オフサイトコピーとしては、せっかく持っているpCloudを使いたいところです。

3 Proxmoxのバックアップ

Proxmox Backup Serverという機能があります。差分バックアップや重複排除に対応していてなかなか良さそうなのですが、クラウドやポータブルなUSBディスクには対応していないようなので断念しました。

次善の手としてProxmoxのバックアップ機能を使います。こちらは潔くフルバックアップのみですが、圧縮には対応しています。毎回VMサイズ820GBのファイルを作られても困りますし。。。

3.1 USBディスクの準備

バックアップ先は10年前から持っている気がする1TBのUSBドライブ(HDD)です。数年ぶりに引っ張り出してきて繋いだら無事に動きましたが、こいつが一番先に逝ってしまいそうな気がします。

これをMacにつなぐと、disk utilityが立ち上がって「読めないけど初期化するよ?」と聞いてくるので、Proxmoxとの互換性を考慮してexFAT形式でフォーマットします。読めてしまう場合も、いったん取り出しボタンをクリックした後で、やはりdisk utilityを使ってexFATでフォーマットします。FAT32だと2GB以上のファイルが扱えないらしいので。

これを取り出し、ホームラボPCに差し替えます。

3.2 USBディスクへのバックアップ

このままではProxmoxが認識しないので、Proxmoxにsshして手動マウントします。

mkdir /mnt/bkup
fdisk -l  # USBディスクのパスを調べる。/dev/sdb1など。
mount -t exfat /dev/sdb1 /mnt/bkup

すると、ProxmoxのWeb UI上にそのディスクが現れます(だっけ?)。仮に<bkup1>とします。ついで、バックアップジョブを作成します。手動バックアップしたいだけなので、一番長い1年1回のスケジュールを仮に指定します。

  • Datacenter > Backup > Add
  • Generalタブ > Storage: <bkup1> > Schedule: First day of the year 00:00 > check VM > Mode: Snapshot
  • Retentionタブ > check Keep all backups
  • > Create
  • 作成されたバックアップジョブを選択してハイライトさせる > Run now

バックアップが完了したらProxmoxにsshしているターミナルでUSBディスクをアンマウントします。

sync # おまじない
umount /mnt/bkup

これで第1のバックアップができました。

4 MacBookにバックアップファイルを持ってくる

次いで、MacBook上にバックアップファイルを持ってきます。これは簡単で、USBディスクをつないでローカルにコピーするだけ。第2のバックアップもできました。

5 pCloudにアップロードする

残るはオフサイトバックアップです。pCloudのライフタイムプラン512GBを購入しているので、これを使います。

ところが、pCloudはGBのファイルをアップロードできなかったという情報(古いかもしれない)をいくつか見た気がするので、安全のためにファイルを分割して転送することにしました。これだと途中経過も見られますし。(巨大ファイルはアップロードできないと思い込んでいたのが本当のところです。。。)

分割:

split -b 800M -d bigfile bigfile-part

結合はこれでできるはず:

cat bigfile-part* >bigfile

クラウドへのアップロードには既に設定してあるrcloneを使います。過去のブログエントリーを参考にしてcryptリモートを作成し、こちらに転送します。pCloudがわざわざファイルを結合して覗いたりはしないと思いますが、念の為。

rclone mkdir pcl:/bkup_cryp
(略。リンク参照。)
ls >filelist.txt  # 分割したファイルのある場所で
rclone copy --include-from=filelist.txt . bkup_crypt:/20250629/

54GB分のファイル転送に3時間ほどかかりました。 おっと、filelist.txtまで送ってしまいました。ま、いいか。 これでオフサイトにある第3のバックアップができました。

6 終わりに

3-2-1ルールを満たすバックアップができるようになりました。全く自動化していませんが、USBディスクへのバックアップは週に1回くらい、クラウドへは数ヶ月に1回もやればいいのでこれでよしとしましょう。

ところで、4th of JulyセールでpCloudが2TBライフタイムプランを$279(66%オフ)に下げているんですよね。$279かぁ。ちょっと高いな。

Tech Tech