Raspberry Pi ★ rsync でバックアップ(外付けHDD)
先日、Raspberry Pi の ルートファイルシステムのHDD移行 に成功したので、ルートがあるHDD1から、HDD2にrsyncでバックアップをとります。
これで、/boot/cmdline.txt を書き換えてHDDを切り替えるだけで、即バックアップHDDで起動可能になります。
目次
フォーマット
バックアップ用HDDを接続してフォーマットします。
1 |
sudo mkfs.ext4 /dev/sdb |
パーティション作成
HDD1と同じ感じでパーティション切ります。
1 |
sudo fdisk /dev/sdb |
確認
パーティションの確認はpです。
1 |
Command (m for help): p |
削除
削除する場合はdを入力し、その後、削除するパーティションナンバーを入力します。
1 |
Command (m for help): d |
パーティション番号の入力
1 |
Partition number (1,2, default 2): |
作成
作成する場合はnを入力します。
1 |
Command (m for help): n |
ルート用パーティションを作成します。
1 2 3 4 5 6 7 8 9 |
Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-1953525166, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-1953525166, default 1953525166): +128G Created a new partition 1 of type 'Linux' and of size 128 GiB. |
その他データ用パーティションを作成します。(※下記は上をコピペして書き換えたので、First sectorとLast sectorの値が本当ではありません。念の為・・)
1 2 3 4 5 6 7 8 9 |
Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): 2 First sector (2048-1953525166, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-1953525166, default 1953525166): +300G Created a new partition 1 of type 'Linux' and of size 300 GiB. |
書き込み
設定した内容を書き込む場合はwを入力します。
1 |
Command (m for help): w |
wするまでは書き込みされません。やめたい場合は、wせずにqで終了します。
終了
qを入力してfdiskを終了します。
1 |
Command (m for help): q |
エラーメッセージ
「ビジーです」みたいなメッセージが表示される場合があります。その際は、再起動すると、正常に読み込みされます。
1 |
sudo reboot |
パーティションのフォーマット
作成したパーティションのフォーマットをします。
1 2 |
sudo mkfs.ext4 /dev/sdb1 sudo mkfs.ext4 /dev/sdb2 |
マウントされています的なエラーメッセージが出る時があります。その時はアンマウントしてからフォーマットします。
1 2 |
sudo umount /dev/sdb1 sudo umount /dev/sdb2 |
マウント
マウントします。
1 2 |
sudo mount /dev/sdb1 sudo mount /dev/sdb2 |
また、バックアップ用HDDを起動時に自動マウントさせるように設定します。
1 2 3 4 5 6 7 8 9 10 11 |
proc /proc proc defaults 0 0 /dev/mmcblk0p1 /boot vfat defaults 0 2 /dev/sda1 / ext4 defaults,noatime 0 1 # a swapfile is not a swap partition, no line here # use dphys-swapfile swap[on|off] for that /dev/sda2 /var/share ext4 defaults 0 0 #Buck Up /dev/sdb1 /mnt/bk1 ext4 defaults 0 0 /dev/sdb2 /mnt/bk2 ext4 defaults 0 0 |
バックアップ
rsync コマンド でバックアップします。
1 |
sudo rsync -auP --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/etc/fstab","/var/share/*"} / /mnt/bk1 |
1 |
sudo rsync -auP --delete --exclude={"/lost+found"} /var/share/ /mnt/bk2 |
注意:「–exclude={」の中にスペースを入れると効かなくなります。(2016/5/31追記)
最初はすこし時間がかかりますが、二回目からは差分だけになるので、早く終わります。
オプションについては、「-a」と、「–exclude=”バックアップ先マウントディレクトリの”」は必須です!!あとはお好みで色々つけてみると良いかと思われます・・・。-a は そのままコピーする、という感じで、–excludeは除外するファイルの指定ですが、先ほどマウントした、バックアップ先のディレクトリ(自分自身)を除外しないと、無限ループに陥ります。
オプションについての詳細はこちらなど・・・。
念の為WPデータを別途プラグインでバックアップ
ラズパイを自宅サーバーとして使用しているので、最も消えてほしくないデータはこのブログ(WordPress)のデータです。なので、こちらも念の為、別にバックアップをとっておくことにしています。
なんとも便利な「UpdraftPlus Backup/Restore」プラグインを使用させて頂いております。
1日2回、自動バックアップを走らせて、DropBoxに自動的にあげてもらってます。
次回はrsyncを自動化
さて、次はrsyncをシェル・スクリプト化してcronで毎日動かすようにします。
(追記 2016.09.16;「次回は」とか書いてやってないままでした… 今のところは、手動でやってます。そのうち…)
このコマンドをcrontabにそのまま書いただけだと、excludeが機能してくれませんでした。/mnt ディレクトリ無限ループの悪夢再来・・・
2016.0916追記:リストア
リストアする機会があったのでやってみたのですが、パッケージの情報が上手く解決されず、調査中です。
1 |
sudo rsync -auP --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/etc/fstab","/var/share/*"} /mnt/bk1/ / |
1 |
sudo rsync -auP --delete --exclude={"/lost+found"} /mnt/bk2/ /var/share/ |
詳細メモ;apt-get install する前のバックアップを上記コマンドでリストアし、再度 apt-get install したときに、元の状態に戻っていなかった。ファイル自体は削除されてるけどパッケージ情報が残ったままのような…?
ひとまず apt-get –purge remove で再度インストールし直して対応…。
おまけ
よろしければこちらの記事も是非どうぞです〜!
あと、先日お父ちゃんのハンダ付け動画がうpされました。本人曰く、「延々ハンダ付けの地獄の動画」です。
撮影者は私ですが、手さばきの良さにほえ〜、職人やな〜、と今まで知らなかったお父ちゃんの一面を見ましたねw
ちなみにHomeMadeGarbage動画(YouTube)内のBGMは全てお父ちゃんの曲です。