Macで2つのフォルダを同期させる方法

Finderには、2つのフォルダを同期させておく機能がありません。フォルダを外付けディスクやNASに一度コピーすることはできても、ファイルが変わったときにそのコピーを更新したり、削除したファイルをコピーから取り除いたりする仕組みはありません。2つのフォルダをそろえておくには、ターミナルのrsyncコマンドを使うか、同期ツールを備えたアプリを使います。どちらを選ぶ前にも、どの種類の同期にするかを決めてください。片方はファイルを削除するからです。
コピーかミラーか:最初に決めること
一方向の同期は、つねにソース(作業しているフォルダ)からコピー先(コピーを保管するディスク、NAS、サーバ)へ向かいます。方法は2つあります。
- コピー:新しいファイルと変更されたファイルをコピー先に送ります。コピー先では何も削除されません。ソースでファイルを削除しても、古いコピーはコピー先に残ります。保管用には安全な選択です。
- ミラー:コピー先をソースとまったく同じ状態にします。ソースで削除したものは、コピー先でも削除されます。コピーはすっきり保たれますが、ソースでのミス(あるいは、いつの間にか空になったソース)がそのままコピー先に広がります。
ミラーはバックアップではありません。ソースのファイルを削除したり壊したりすると、次の同期でその被害もコピーされます。昨日の版のファイルを取り戻したいなら、同期だけでなく日付つきのバックアップが必要です(最後に説明します)。
標準の方法:ターミナルでrsync
macOSには、変更された部分だけをコピーするコマンドラインツールrsyncが含まれています。プロジェクトのフォルダを、マウントしたNASの共有フォルダへコピー方式で同期するコマンドは次のとおりです。
rsync -av ~/Projects/ /Volumes/NAS/Projects/
ミラーにするには--deleteを加えます。必ず最初に--dry-run(または-n)を付けて実行してください。何も変更せずに、実行した場合の結果を一覧にしてくれます。
rsync -av --delete --dry-run ~/Projects/ /Volumes/NAS/Projects/
これで同期はできますが、注意点があります。
- 末尾のスラッシュに意味があります。
~/Projects/はフォルダの中身をコピーし、~/Projects(スラッシュなし)はコピー先の中にProjectsフォルダを作ります。間違えるとファイルが違う場所に入り、--deleteと組み合わせると残したかったファイルまで消えることがあります。 - 安全網がありません。
--deleteはゴミ箱を通さず、確認もなく完全に削除します。ディスクがマウントされていない、パスが間違っているといった理由でソースが空なら、ミラーはコピー先を空にしてしまいます。 - スケジュールは自分で組みます。 1時間ごとや変更のたびに実行するには、launchdのジョブやcronの設定を書き、そのログも自分で確認する必要があります。
ターミナルに慣れていて、毎回--dry-runで確かめるなら、rsyncで十分です。設定が目に見え、削除の前に確認が入る形で同じことをしたいなら、同期ツールを使いましょう。
Folia Filesで2つのフォルダを同期する
Folia Filesには同期ツールが組み込まれています。Mac内のフォルダ、外付けディスク、マウントしたNASの共有フォルダやサーバ、またはrclone経由のクラウドとの間で、2つのフォルダを一方向に同期します。

同期を設定する
- ツール › 同期…(⇧⌘Y)を選びます。ツールはタブで開きます。
- 新規同期をクリックし、選択…でソースとコピー先を指定します。それぞれのカードにフォルダをドラッグしてもかまいません。
- コピー先の種類は、ディスクやマウントした共有フォルダならフォルダ(ディスク、ボリューム、マウント)、クラウドをマウントせずにファイルを送るならrclone経由のクラウドを選びます。後者にはrcloneが必要で、別途インストールします(Homebrewなど)。
- モードを選びます:コピー(追加と変更)またはミラー(同一の転送先)。続いて、コピー先で取り除かれる・置き換えられる項目の扱いをゴミ箱に入れるか完全に削除から選びます。
- 比較を選びます。
- サイズと日付(高速):サイズか変更日が違えば、ファイルをコピーし直します。rsyncの標準の動作と同じです。
- 内容のチェックサム(正確):サイズが同じファイルはSHA-256のチェックサムで比べます。日付が変わっただけの同一ファイルは、コピーし直しません。チェックサムは記憶されるので、2回目以降は変化したものだけを読み直します。
- タイミングを選びます:手動で、一定間隔で、指定した時刻に毎日、またはソースが変更されるたびに。必要なら、カンマで区切って除外を加えます(
node_modules, *.log, .git)。 - テスト実行をクリックすると、同期で何が起きるかを確認できます:新規、更新、削除されるファイル、競合、転送するデータ量。そのあと今すぐ同期をクリックします。
スケジュールした同期や変更をきっかけにした同期は、あなたが今すぐ同期で最初の1回を実行してから動き始めます。Folia Filesが開いているあいだ動作し、ツール内のログイン時にFolia Filesを開くスイッチをオンにすれば、再起動後も続きます。保存した同期は左のリストに、スケジュールと最終実行の時刻とともに表示されます。緑のチェックマークは、その実行が問題なく終わったことを示します。
削除の前に何が起きるか
ミラーで危ないのは削除です。そのためFolia Filesは、何かを取り除く前に確認します。
- 空のソースや見つからないソースからはミラーしません。 ソースにファイルがないのにコピー先にはある場合や、ソースのディスクがマウントされていない場合、同期は止まります。ソースとコピー先が重なっている場合や、クラウドのいちばん上の階層へのミラーも拒否します。
- 実際の件数を確認してから進みます。 手動で実行したミラーがファイルを削除する場合は、件数と行き先(ゴミ箱か完全に削除か)を示して先に確認し、ボタンは同期して削除になります。ミラーがあるコピー先で初めて削除するときは、ダイアログがそのことを明記します:ソースにないものは、同期が置いたものでなくてもすべて取り除かれます。
- スケジュール実行は勝手に削除しません。 一度も削除を確認していないコピー先で削除することになる場合や、コピー先のファイルの半分以上を取り除くことになる場合、自動のミラーはスキップされ、通知されます。確認のために一度手動で実行してください。
- 読めないものがあれば何も削除しません。 同期中にソースのフォルダが読めなかった場合、読めた分だけコピーし、削除は行いません。
- コピー先の新しいファイルは残します。 コピー先がフォルダの場合、コピー先で変更された(ソースより新しい)ファイルは上書きせず、競合として表示します。
コピーモードでは、コピー先で何も削除しません。
サイト版とMac App Store版
Folia Filesには2つの版があり、同期の扱いが異なります。
- サイト版:同期ツールがあり、フォルダとクラウドの両方をコピー先にできます。
- Mac App Store版:同期は、無料の小さなアプリFolia Files Companionが加える機能の一つです。Companionをインストールして有効にすると同期ツールが現れ、Companionがなければメニューに**同期…**の項目は表示されません。Companionがあれば、フォルダへの同期とrclone経由のクラウドへの同期が使えます(クラウドへの同期はCompanionの中で動き、rcloneのインストールは引き続き必要です)。
バックアップ(ツール › バックアップ…)は、どちらの版でもCompanionなしで、ディスクやNASに対して使えます。
同期かバックアップか:信用する前に確かめる
同期で手に入るのは、最新のコピーが1つだけです。以前の版のファイルが必要なら、バックアップを使いましょう。選んだフォルダの日付つきコピーをディスクやNASに保存し、変わっていないファイルは余分な容量を使いません。両方を使う人も多くいます:NASに作業用コピーを置くためのミラーと、過去に戻るためのバックアップです。
コピーが本当にソースと一致しているかを確かめるには、**ツール › 比較…**を開いて2つのフォルダを比べます。追加、削除、変更されたファイルが並べて表示されます。

コピー先がマウントしていないサーバやクラウドなら、macFUSEなしでMacからSFTPとS3に接続する方法もご覧ください。


