【備忘録】LinuxファイルサーバのデータをバックアップしてFreeNASに復元する方法

前置き

我が家では、ネットワークオーディオを楽しむためと、データのバックアップ先を確保するために、小型パソコンを自作してファイルサーバを立ち上げている。

サーバを立ち上げたのはかれこれ3年以上前で、自作PCにUbuntu14.04をインストールしてSambaなどを入れていたのだが、メンテナンスがしんどくなってきたのと、ファイルサーバの機能が欲しいのであってサーバ自体が欲しいわけでは無いということに気づいたので、UbuntuからFreeNASというNAS専用OSに切り替えることにした。

そこで、OS変更前にサーバに保存しているデータを外付けHDDにバックアップしようとしたのだが、その時の作業内容を備忘録として残しておく。

Linuxで外付けHDDを認識させる

外付けHDDの既存パーティション削除からext4でのフォーマットまで

まず、接続した外付けHDDを操作するにはどのデバイスファイルを操作するか確認するため、HDDを接続する前後でdf -lを実行する。

上記のコマンドで外付けHDDのデバイスファイルが判明したら(今回は/dev/sdc/)、フォーマットをNTFSからext4に変更するため、fdisk /dev/sdcを実行。

対話型プロンプトが表示されるので、まず、pコマンドで現在の状態を確認し、次にdコマンドで既存パーティションを削除し、再びpコマンドを実行してパーティションが全て削除されているのを確認したら、wコマンドで作業内容を保存する。

再び、fdisk /dev/sdcを実行して、今度はnコマンドでパーティションを作成する。pコマンドでパーティションが作成されているのを確認したら、wコマンドで作業内容を保存する。

上記の作業ではフォーマットは行われないので、mkfs.ext4 /dev/sdcコマンドを実行して、ext4でフォーマットする。HDDの容量が1TBあったため、結構時間がかかった。

外付けHDDのマウント

マウントする場所を先に作成する必要があるため、mkdir /mnt/seagate_hddコマンドを実行してマウントポイントを作成する。(Seagate製のHDDなのでseagate_hddにした)

マウントポイントを作成したら、mount /dev/sdc /mnt/seagate_hddコマンドを実行して外付けHDDをマウントする。それからdf -lコマンドを実行して、外付けHDDがきちんとマウントされたか確認する。

外付けHDDへのバックアップ

rsync -av /(sambaの共有ディレクトリ) /mnt/seagate_hddでデータをバックアップ。100GB以上あったため、かなりの時間がかかった。

バックアップした外付けHDD(ext4)をMacで読み込む

素のMacでは、ext4でフォーマットしたHDDは認識できないため、“ext4fuse”というツールをインストールする必要がある。ただし、macOSでサードパーティー製のファイルシステムを扱うには、FUSEというユーザー空間で動作するファイルシステムをインストールする必要がある。(FUSEの説明は 新・OS X ハッキング!(113) あのファイルシステムをOS Xでラクに読み書き(1) | マイナビニュース 参照)
そのため、”ext4fuse”のインストールは次の2つのコマンドで行うことになる。

brew cask install osxfuse
brew install ext4fuse

これで”ext4fuse”のインストールができたら、ext4fuse -o allow_other /dev/disk3 ~/seagate_hddコマンドで外付けHDDをマウントする(seagate_hddディレクトリはあらかじめ作成する)。なお、外付けHDDのデバイスファイル/dev/disk3は、ディスクユーティリティーアプリで外付けHDDを開いて装置名の項目を見たらdisk3となっていたので、それを入力した。

上手くマウントできれば、~/seagate_hddディレクトリに外付けHDDがマウントされて中身を確認できるようになる。

バックアップした外付けHDD(ext4)をWindowsで読み込む

Macと同様に、素のWindowsもext4でフォーマットされたHDDを認識できないため、”Ext2Fsd“というツールをインストールする必要がある。 ツールは上記のリンク先からSourceforgeに移動してダウンロードする。複数のファイル形式があるが、実行ファイル形式を選べば後が楽なので、今回は実行ファイル形式をダウンロードした。

ダウンロードしたらファイルを実行してインストールする。インストール後、外付けHDDを接続して”Ext2 Volume Manager”を起動し、外付けHDDが認識されていたら、そのディスクをダブルクリックして設定画面を開き、”Automatically mount via Ext2Mgr”にチェックを入れ、適当なドライブ名を選択してマウントする。

上手くマウントできれば、外付けHDDがマイコンピュータに表示されるので、念には念を入れたバックアップとして、Windows機にもサーバデータをバックアップした。外付けHDDから本体のHDDへのコピーなので、単純にコピペすれば作業は完了するが、少しでも作業時間を短くするため”FastCopy“というフリーソフトを使用した。このソフトは、コピーと同時にファイルのベリファイを行なってエラーチェックもしてくれるので、大量のファイルをコピーする今回の作業ではとても役に立った。

外付けHDDからデータを復元

上記のバックアップ後にファイルサーバにFreeNASをインストールし、それから、外付けHDDにバックアップしていたデータを復元した。

FreeNASには外付けHDDのデータをインポートする機能がある(ストレージ → ボリューム → import disk)ため、この機能でデータを復元した。復元には時間がかかるが、バックグラウンドで実行させるオプションがあるので、迷わずそのオプションを選択した。


以上の作業で、ファイルサーバのOS変更と変更に伴うファイルのバックアップ〜復元作業が完了。

参考にしたウェブサイト