どうも、Tです。
仕事のファイルや検証用の履歴ファイルをざっくり手動バックアップしたりしていたのですが、ファイル容量が多くなり煩雑になったり、クラウドストレージの共同なので先祖返りしたりして痛い目をみることが増えてきました。
ということで、暇な時間ができたので自動でバックアップしてくれる環境を作りました。
作り直すとき忘れてしまいそうなので備忘録。
目次
したいこと
ファイル操作に関する現状分
Tのファイル関連使い方についてまとめてみました。
基本的にはクラウドストレージのOneDriveを使っています。
- メインで利用しているのはデスクトップPC
- 外出の時にノートPCを利用
- 基本的にデータ共有はOneDrive経由で行う
- 利用頻度の低いデータ・容量の大きいファイルはFreeNASに保管する
- ノートPCのデータはすべてOneDriveへ保管する
最終目標
最終的に行いたいことをざっくりまとめました。
- OSのバックアップは取得しない(再インストールできるため)
- OneDrive障害に備えてYドライブすべてをFreeNASへバックアップする
- Yドライブのローカルバックアップ用としてZドライブにフルコピーする
- 誤って削除したファイルを戻せるようにする
- FreeNASのSMB共有ファイルを別のFreeNASへコピーする
- バックアップ処理は、時間指定で自動実行できる
今回作るところ
今回は、下図の部分だけ作ってみます。
- Yドライブは全体をZドライブと同期する
- Yドライブ→Zドライブの同期はリアルタイム同期で行う
- Yドライブで誤って削除したファイルはZドライブで保有し復元できるようにする
- ZドライブからFreeNASへの同期は、1日1回自動で行う
- スクリプトは作るの面倒なのでフリーソフトを利用する
- お金はかけず無料で作る
環境
デスクトップPC
- OS:Windows10
FreeNAS
- OS:FreeNAS-11.2-U3
コピーツール
- ツール:FreeFileSync 10.24
FreeFileSyncを選んだ理由は、下記になります。
調べれば調べるほど、他のツールよりも非常に有用な機能が盛り込まれていました。
- オープンソースで商用も無料で利用可能
- デフォルト状態で日本語対応
- GUIで設定が簡易
- 同期時に削除ファイルを退避する機能がある
- 同期種類が複数ある(今後仕様変更があっても対応できそう)
- 同梱のRealTimeSyncを使ってリアルタイム同期が可能
- バッチファイルが自動生成できる
- FreeFileSync制作者のビジョンに共感できた
FreeFileSyncのビジョンはこちら。
事前準備
smb共有フォルダの準備
PCの外部に保存できるようにsmb共有フォルダを用意しました。
今回はFreeNASを利用しましたが、設定方法割愛します。
FreeFileSyncは、2020年5月時点で下記のプロトコルに対応しています。
- Google Drive
- FTP
- SFTP
- ローカルドライブ
smbのネットワークドライブマウント
FreeFileSyncから直接smbは見えないので、Windows10にネットワークドライブとしてマウントしておきます。
FreeFileSyncのインストール
インストールは簡単なので割愛します。
次へをクリックしていくと導入できます。
ファイル・フォルダ整理
フォルダやファイルを整理してOneDriveを完全に同期している状態にして実施しました。
各種設定
FreeFileSyncの画面の見方
画面説明や操作説明は、公式サイトにまとめられています。
引用させていただきました。
- 比較を開始
- 比較設定を変更する
- 特定のファイルを含める/除外する
- 同期設定を変更する
- 同期を開始
- フォルダペアを追加する
- 左と右のフォルダーを選択
- 構成の保存/読み込み
- ツリー概要パネル
- 同期プレビュー
- グリッドに表示するカテゴリを選択してください
- 同期統計
FreeFileSync設定(Yドライブ→Zドライブ同期設定)
設定ファイル作成
スタートメニューから「FreeFileSync」をクリックして起動します。
コピー元とコピー先を指定します。
下記のボタンを押すと、コピー元と先が入れ替わるのでクリックしないように気を付けましょう。
設定ボタンをクリックします。
比較タブでコピー元と先の比較方法を選択します。デフォルトのままとしました。
「ファイルの内容」はビット単位で比較されるため確実なファイルの比較が行えるのですが、処理が遅くなりそうなのでご注意ください。
フィルタタブで対象のファイルや除外ファイルを指定します。下記の2つを追加しました
\OneDriveTemp*:OneDriveのテンポラリファイルは同期不要のため除外
\OneDrive – xxxx\.*:OneDriveの同期で利用されれる隠しフォルダ除外
\_FreeFileSync_Local*:手動でFreeFileSyncログファイルなどを同期フォルダにためるようにするため除外
\_without_backup\:バックアップ不要のファイルを保存するフォルダのため除外
同期タブで同期設定をします。
重要な部分なので分割して説明します。
同期方法の選択です。全く同じ内容にする場合、「ミラー」を選択しておけばOKです。
今回は、コピー先にFreeFileSyncが出力するログを保存したり、削除ファイルを退避するフォルダを用意しているため、カスタムで独自に設定しています。
アイコンの上にマウスを置くとそれぞれの説明が表示されます。
詳細な内容は、下記に記載されています。
ファイル削除時の動作です。
ファイルが削除される場合、「Z:\_FreeFileSync_Local\Delete_files」にタイムスタンプのフォルダを作成してその下にファイルパスとファイル名で保存するように設定しています。
「x日以降」の詳細がマニュアルになかったので正確ではないですが、30日以降経過している場合は、削除する動作になると期待しています。
こちらは詳細わかり次第追記します。
バージョン管理の内容については、下記に記載されています。
ログ出力に関する設定です。
Eメール通知したかったのですが、こちらは寄付が必要なようなので一旦見送りました。
「規定のログ保存パスに上書き」にチェックをすることによってログの出力先を変更できます。
「OK」ボタンをクリックして設定画面を終わらせます。
「保存」ボタンをクリックしてファイルを設定ファイルを任意の場所に保存します。
「SyncSettings_LocalBackup_Manul」という名前で保存しました。
これで先ほどの設定で手動実行することができます。
次に自動化するためにバッチ用の設定を行います。「別名保存」の右にある「一括ジョブで保存」をクリックします。
バッチの設定を行います。
デフォルト状態で「別名保存」ボタンで保存します。
「SyncSettings_LocalBackup_Batch」という名前で保存しました。
設定ファイルで動作するかテストしておきましょう。
「比較」ボタンをクリックしコピーファイル一覧が出力されます。「同期処理」ボタンをクリックしてコピーが行われることを確認しておきます。
設定ファイルの作成は以上です。
RealTimeSync設定(リアルタイム同期)
リアルタイムで同期を行う設定にReadlTimeSyncの設定を行います。
スタートメニューから「RealTimeSync」を起動します。
RealTimeSyncの下記の設定を行います。
監視するフォルダ
監視対象のフォルダを選択します。今回はYドライブすべてを同期させたいのでYドライブを選択しました。
待機時間
何秒間隔で監視を行うかです。デフォルトの10秒で行っています。
コマンドライン
先ほど設定した「SyncSettings_LocalBackup_Batch」をコマンドラインで実行できるように設定します。
書式は下記になります。
“FreeFileSync.exeのフルパス” “設定ファイルのフルパス”
<参考例>
"C:\Program Files\FreeFileSync\FreeFileSync.exe" "Y:\xxxxx\xxxx\FreeFileSync\SyncSettings_LocalBackup_Batch.ffs_batch"
「開始」ボタンを教えて、ファイル作成・削除などして同期が行えることを確認します。
RealTimeSyncのスタートアップ登録
RealTimeSyncは、手動で起動後に開始ボタンをクリックしないと開始しません。
ここでは、パソコンを起動してログインしたら自動的にRealTimeSyncが開始するように設定します。
「shell:startup」を入力してOKをクリックします。
下記のようにスタートアップフォルダが開きます。
スタートアップフォルダに、C:\Program Files\FreeFileSync\RealTimeSync.exeのショートカットを作成します。
ショートカットのプロパティを開き「リンク先」をFreeFileSyncで作成した「SyncSettings_LocalBackup_Batch.ffs_batch」フルパスを指定するように変更します。
変更前
“C:\Program Files\FreeFileSync\RealTimeSync.exe”
変更後
“C:\Program Files\FreeFileSync\RealTimeSync.exe” “Y:\xxxxx\xxxx\FreeFileSync\SyncSettings_LocalBackup_Batch.ffs_batch”
これで次のログイン時からRealTimeSyncが自動的にファイルの監視を行ってくれるようになりました。
公式サイトも手順が公開されています。
FreeFileSync設定(Zドライブ→Backupフォルダ同期設定)
設定ファイル作成
設定ファイル自体は、「FreeFileSync設定(Yドライブ→Zドライブ同期設定)」とほぼ同じのためバッチの設定画面だけ記載しておきます。
バッチ設定名:SyncSettings_RemoteBackup_Batch
Windowsタスクスケジューラ設定(1日1回同期)
SyncSettings_RemoteBackup_Batchを作成しましたが、こちらも自動手的に同期は行ってくれません。
こちらの同期は1日1回と間隔が大きいためWindowsタスクスケジューラで行います。
ファイル名を指定して実行で「Taskschd.msc」と入力しOKをクリックします。
「タスクスケジューラ(ローカル)」を選択し「基本タスクの作成」をクリックします。
下図のウィザードが表示されるので、「名前」「説明」に任意の値を設定して「次へ」をクリックします。
「毎日」を選択し「次へ」をクリックします。
開始に同期を開始したい時間を設定します。毎日行いたいので間隔は1日に設定しています。
操作は、「プログラムの開始」を選択します。
下記の値を設定します。
プログラム/スクリプト:”C:\Program Files\FreeFileSync\FreeFileSync.exe”
引数の追加(オプション):”Y:\xxxxxx\検証環境\FreeFileSync\SyncSettings_RemoteBackup_Batch.ffs_batch”
設定内容を確認し「完了」ボタンをクリックします。
「タスクスケジューラライブラリ」を右クリック→「最新の情報に更新」をクリックします。
先ほど設定したタスクが登録されていることを確認して完了です。
Windowsスケジューラの設定については、公式でも公開されています。
動作確認
動作確認方法について、参考までに記載します。
OSログイン時のRealTimeSync自動同期確認
OSにログインし、タスクトレイにRealTimeSyncのアイコンがあれば自動起動が行えています。
ログの出力の状態
出力フォルダに下記のようなhtml形式で保存されます。完了理由に問題があった場合「停止」や「エラー」とつけてくれるのはありがたいです。
htmlファイルを開くと同期にかかった時間やフォルダ・ファイルリスト一覧が出力されています。
ファイル削除時の状態
削除したファイルは、設定したフォルダに下記のようにタイムスタンプ名がついた形で保存されるので復元も容易に行えます。
ファイルコピーの速度
ローカルコピーの速度参考です。
- コピー元HDD:5400rpm
- コピー先HDD:5400rpm
- 接続方式:SATA
- 容量:約1.7TB(
- ファイル数:約95000
- 時間:6時間46分
ファイル容量マチマチなのですが、約4.3GB/分くらいの速度でコピーできていました。
HDDが遅いタイプなので悪くないかな思います。
FreeFileSyncのリソース使用状況
FreeFileSyncのリソース状況を確認してみました。
大量のファイルをコピー最中しているです。思ったより少ないリソースで動いておりました。
コピーしていなときに起動している状態です。ほぼリソース利用はありませんでした。
参考
下記のサイトを参考にしました。
まとめ
とりあえず想定した動きができたので様子見したいと思います。
色々コピーツール使ってきましたが、FreeFileSyncは痒いところにも手が届く非常に良いツールだなと思いました。