CoreOS な開発環境で外付け USB ディスクにバックアップする方法を調べた。
CONTENTS
ディスクの認識
外付けディスクはほぼ問題なく認識された。 ディスクが認識されていることを確認する方法がわからなかったため、途中再起動はした。
とりあえず /dev/sdb
として認識されていることを確認した。
この確認を誤ると初期化してはいけないディスクを初期化してしまうので注意。
ディスクの初期化
【ゼロから解説】Linuxのフォーマットの方法を参考にしてディスクの初期化を行う。
/dev/sdb
を、ext4
で初期化するコマンドが以下。
間違いなく対象のディスクであることを確認しておくこと。
mkfs -t ext4 /dev/sdb
出力を取っておくのを忘れたが、ここで出てくる Filesystem UUID
をメモしておく。
Unit ファイルの作成
Mounting Partitions Using Systemd を参考にして Unit ファイルを作成する。
この StackExchange によると、ファイル名は mount するパスと一致させる必要がある。
ここでは /mnt/backup
に mount するので、/etc/systemd/system/mnt-backup.mount
とした。
以下が Unit ファイルの内容。
$UUID
は先にメモした Filesystem UUID
とする。
[Unit] Description=Mount Backup USB HDD Before=local-fs.target [Mount] What=/dev/disk/by-uuid/$UUID Where=/mnt/backup Type=ext4 Options=defaults [Install] WantedBy=local-fs.target
systemctl
で start
して動作確認を行う。
systemctl daemon-reload systemctl start mnt-backup.mount
何かエラーが出たら systemctl
で status
確認しなさい、的なメッセージが出るはずなのでそれでトラブルシューティングする。
問題なければ systemctl
で enable
してからリブートしてみる。
起動後、ディスクがちゃんと mount されていれば OK。
rsync でバックアップ
以下のコマンドでバックアップしている。
rsync -aq --delete /docker-volumes/ /mnt/backup/volumes
/docker-volumes
に共有する volume をすべて入れてある。
/var/lib/docker
のバックアップでも良いのだが、これは通常の権限ではできないのでやめた。
まとめ
以前は Mac に外付けディスクを取り付けて TimeMachine と CoreOS のバックアップの両方を行っていた。 Windows に移行した結果、Windows では本体のバックアップをやめた。 本来はやったほうが良いのだが、書類は iCloud に置いてあるし、メモは付箋アプリでやっている。 とりあえず必要なものはクラウドにバックアップされているので、Windows は立ち上がればよかろうなのだ、で行く。
その結果、CoreOS を入れてあるマシンに直接外付けディスクをつないでバックアップしたら良いじゃん、ということになった。
調べ始めると最初に Ignition Config で Unit ファイルを作成する方法が出てきたが、とりあえず今回は手動で Unit ファイルを設置してみた。
外付けディスクの容量にはかなり余裕があるので、別な用途も考えてみよう。