はじめに
家のiMacと持ち出しているMacBookProでプロジェクトディレクトリを同期させたい…………
今までiCloud、Dropbox、GoogleDrive、Nas等を使って試した結果このあたりのツールはファイルサイズというよりファイル数が多いディレクトリの共有が遅いようだ
venderディレクトリ、node_modulesディレクトリはすぐに数千ファイルになり、これが数十プロジェクトになると丸一日かけても同期が終わらないこともある
CPUもやたらと使い、開発中は同期をOFF、終わったら同期をONはしたくない
そこでSyncthing
Go言語で書かれたオープンソースの同期ツール
https://github.com/syncthing/syncthing
すごいところ
- 他ツールと比べると半端ではなく早い
laravelプロジェクト30個ほどの同期はDropboxだと丸2日、iCloudだと丸3日かかっても終わらなかったがSyncthingは2時間程度で終わった。 - WAN越しでもいける
中継サーバーを使い、IPアドレスではなくDevice IDというコードを使って接続する - Win、Mac、iOS、Android対応
- バージョン管理可能
ゴミ箱機能、期間別等フォルダ分け等が行えるけど、プロジェクトディレクトリの共有という目的ならいらないかも - サーバーにインストールしてクラウドストレージとしても使える
導入方法
dmgを実行するだけ!簡単!
https://github.com/syncthing/syncthing-macos/releases/tag/v1.0.0-2
設定は以下
https://docs.syncthing.net/intro/getting-started.html#installing
おまけ
・開発用DBどうするの問題
docker使おう
プロジェクトディレクトリ内にフォルダとして保存できるから
・やっぱりCPU利用率高いよ問題
cputhrottleいれて以下を実行
#!/usr/bin/env bash
SYNC_THING_ID=`ps -A | grep -m1 syncthing | awk '{print $1}'`
sudo cputhrottle $SYNC_THING_ID 10 &