2016年7月17日日曜日

Ubuntu (Linux) と QNAP (NAS) 間で rsync - その 1 / 3

実家に設置している QNAP 製の NAS に、自機(Ubuntu)からデータを rsync でバックアップする体制を確立する。

rsync は、最初に一度バックアップしてしまえば、以降は差分(変更したもの)だけを修正する形になるので、毎回全体を丸ごとバックアップするような重い作業とはならず、極めてスマート。

rsync コマンドの使い方

rsync コマンドは、man rsync すれば詳細は調べられるとして、自分にとって必要な形は次の通り:

rsync -auv --delete --progress src_folder dest_path

-a はアーカイブ用オプションで、ファイルの権限情報の保持などのいくつかのオプションのセット指定。-u は、タイムスタンプが新しくなる場合にのみ更新する。-v --progress は詳細な情報を作業の進行とともに表示。--delete は、削除したファイルも同期して削除する。

src_folderdest_path は他の多くの人が指摘するように、ひとつのハマりポイントなので注意すること。通常、バックアップする場合は、あるフォルダーを丸ごと NAS にコピーする意識で行う。こういった場合、src_path の指定はフォルダー名で終わり、/ を付けない形で記述する。/ を最後に記述してしまうと、そのディレクトリの中の各ファイルを意味してしまい、バックアップ先に、そのディレクトリ直下の各ファイルが直接ぶち撒けられる形となるので、要注意。

一方、src_path の指定をフォルダー(src_folder)にした場合、dest_path は、そのフォルダーが置かれるべきパスにするべきである。つまり、バックアップ元の最後尾にあるフォルダー名は抜いた、そのフォルダーが配置されるべきディレクトリ名を指定する必要がある。初回のバックアップでは失敗しても気付かないかもしれないが、もし失敗した場合、同じフォルダー名のディレクトリが二重で置かれることになる。次回のバックアップでも同じ指定をするのなら、それでもいいのだが、もし一貫性がないと、前回のバックアップと別物として扱われ、差分ではなく、また新たに丸ごとがバックアップされてしまうようなことにもなりかねない。

例えば、自機の ~/mydata を、NAS 上の、/share/homes/scaredeer/backup/mydata としてバックアップする体制にしたい場合:

rsync -auv --delete --progress ~/mydata admin@XXX.XXX.XXX.XXX:/share/homes/scaredeer/backup

という形になる。admin@XXX.XXX.XXX.XXX: の部分は、ネットワーク上の NAS を NAS のアカウント名と共に指定している部分で、これについては後述する(その 2)。ここでのポイントは、dest_path の指定が、/share/homes/scaredeer/backup であって、mydata を除いている点である。

また、試行で rsync を実行したい場合、-n オプションを使う。実際にはコピー・置換・削除等がされず、予行で -v --progress による動作の様子を確かめることができる。

QNAP の設定

上の rsync コマンドでは --delete を指定したが、初期状態の QNAP では、マルチメディアファイルデータベースの機能により、/homes 以下に対して自動的にメディアファイル(画像や動画)のサムネイル(隠しファイル)が作成されてしまうため、バックアップする毎に、本来存在しなかった隠しファイルが追加されてしまう。そのため、--delete オプションによって毎度削除され、都度、QNAP 側では再スキャンしてサムネイルを作り直すという作業が発生してしまう。

これを避けるために、/homes に対するスキャンは無効化しておく。「アプリケーション > マルチメディア管理 > メディアフォルダ」で、/homes のエントリーは削除しておく。

0 件のコメント:

コメントを投稿