anatsuk1のウェブログ

ブログを書いてみたい!

JxyMemoriesでバックアップする♪

JxyMemories紹介

Ubuntu Serverのストレージをスケーラブルにバックアップしたい。想いを込めて開発したソフトウェアを紹介します。

JxyMemoriesは、俺の思い出をながーく残しておきたい。その気持ちから開発を始めて、めちゃめちゃ良いものを作った。

f:id:anatsuk1:20210217220324p:plain
JxyMemoriesイメージ

作りたい。思う。

macOSが持っているTimeMachine機能は良い。すごく短い間隔でストレージのスナップショットをバックアップディスクへ保存する。前回からの差分だけのみを保存するので、たくさんのスナップショットが、すごく小さいディスクへ収まる。

保存したスナップショットを全部もどすと、ストレージがタイムマシーンで過去に戻るイメージ。にピタッと合う。もちろん1個のファイルだけももどせるよ。

Ubuntuで、TimeMachineを以上のソフトウェアを作ったよ。 Ubuntuで、大事な思い出を取っておきたい。 みんな、使ってね♪

JxyMemoriesソフトウェア

JxyMemoriesが持っている機能:

  • LVM2のLV(logical volume)をバックアップする
  • 古くなったバップアップを自動的にレポジトリから取り除く
  • バップアップの一覧と詳細の情報を出力する
  • systemdのタイマーで継続的にバックアップする

バックアップを保存したリポジトリからLVMのLV(logical volume)を復元できる。もちろん、ファイル単体も復元できる。

バックアップの情報

Archive fingerprint: f6e5a3603aaf873fa1fe7827561d6c257b85aad579225fdfd564f26c7fb02b55
Comment: 
Hostname: xxxxx
Username: root
Time (start): Wed, 2021-02-17 21:00:52
Time (end): Wed, 2021-02-17 21:01:08
Duration: 15.51 seconds
Number of files: 173482
Command line: /usr/bin/borg create --verbose --filter AME --list --stats --show-rc --compression lz4 --one-file-system --exclude-caches --exclude /ubuntu-lv-jxy/swap.img --exclude /ubuntu-lv-jxy/root/.cache --exclude '/ubuntu-lv-jxy/home/*/.cache/*' --exclude '/ubuntu-lv-jxy/var/cache/*' --exclude '/ubuntu-lv-jxy/var/tmp/*' '/var/borg/repo.borg::{hostname}-ubuntu-lv-{now}' /ubuntu-lv-jxy
Utilization of maximum supported archive size: 0%
------------------------------------------------------------------------------
                       Original size      Compressed size    Deduplicated size
This archive:                9.99 GB              6.34 GB             13.70 MB
All archives:                2.68 TB              2.27 TB             43.15 GB

                       Unique chunks         Total chunks
Chunk index:                  182561             10059377

GitHubレポジトリへのリンクを貼り付けておきますね💖

github.com

JxyMemoriesソフトウェアjxy-memories.py

Python3で書いたソフトウェアだよ。 好きな場所にインストールしてね!

anatsuk1@xxxxx:/usr/local/etc$ ls -la
total 24
drwxr-xr-x  2 root root  4096 Feb 15 15:04 .
drwxr-xr-x 10 root root  4096 Oct 22 22:58 ..
-rw-r--r--  1 root root    32 Feb 15 15:04 .borg-passphrase
-rwxr-xr-x  1 root root 11848 Feb 15 15:04 jxy-memories.py

バックアップ - LVM2のLV(logical volume)からスナップショットを作る - 作成したスナップショットをマウントする - マウントしたスナップショットをバックアップする

取り除き - 新しいバックアップは残し、古いバックアップをレポジトリから取り除く

JxyMemoriesソフトウェア systemdタイマー

anatsuk1@xxxxx:/etc/systemd/system$ ls -la jxy-*
-rw-r--r-- 1 root root 96 Feb 14 00:08 jxy-memories.service
-rw-r--r-- 1 root root 99 Feb 14 00:08 jxy-memories.timer

タイマーユニットファイルを準備したよ。インターバル起動に便利!