待ち時間問題なくローカルディレクトリをリモートディレクトリと自動的に同期させるにはどうすればよいですか?

待ち時間問題なくローカルディレクトリをリモートディレクトリと自動的に同期させるにはどうすればよいですか?

私は多数のファイルを含むgitトレースストアを開発しました。このコードはリモートシステムで実行する必要があります。したがって、ローカルで変更を適用するたびに、それをリモートデバイスと同期させ、リモートコンピュータで新しいコードを実行する必要があります。

手動同期ステップを取り除きたいです。私が試したこと:

  • 単にgit push(ローカル)とgit pull(リモート)の操作を実行すると、うまくいきますが、役に立たないコミットがたくさんあります。また、時には実装したくない小さな変更を試してください。
  • リモートディレクトリをローカルにマウントするとsshfs機能しますが、ファイルアクセスに多少の遅延があります。構いませんが、PyCharmがこれに依存しており、多くの機能が破損しています。

これを達成するより良い方法はありますか?

ベストアンサー1

結局、私は2つの解決策を見つけました。

  • 使用unison。これは、リモートサーバーのローカルディレクトリをミラーリングするためのコマンドラインユーティリティです。多くのファイルを扱うのと似ていますrsyncが、より複雑で人間工学的です。彼らgithubリポジトリ非常にアクティブですが、Webページにはほとんど開発が中断されていますが、主な欠点はunisonバックグラウンドで実行されるユーティリティではなく、一度だけ実行されるユーティリティです。cron定期的に実行するのと同じ機能を使用できますが、unisonこれにより長い同期遅延(1分以上)が発生し、手動の競合解決がどのように機能するのかわかりません。
  • 使用lsyncd。このプログラムは私のユースケースに合わせて設計されています。特定のディレクトリを継続的に監視し、すべての変更をわずか1秒ですぐに同期します。しかし、最後のコミットは2年前なので、長期的にどれだけ実行可能かは分かりません。

lsyncd引き続き実行されるので結局使用するようになりました。場合は、どのディレクトリをどこでどのように同期するか(たとえば、特定のファイルを無視するかどうか)をlsyncd示すLuaファイルである「設定ファイル」を提供する必要があります。lsyncd次の設定ファイルを使用しました。

settings {
    nodaemon = true,
    statusInterval = 1
}

sync {
    default.rsync,
    source = "/home/donentolon/github/my-awesome-codebase",
    target = "remote-machine:/home/remote-user/my-awesome-codebase",
    delay = 1, 
    exclude = { '/.git', '/.idea' }
}

これはlsyncd私たちに次のことを伝えます。

  • SSHを使用してリモートシステムに接続します(接続するconfigようにSSHを設定しました)。ssh remote-machine
  • 実際の同期に rsync を使用する
  • 少なくとも1秒間に1回、ファイルの変更を確認してください(delay)。
  • トップレベルのgitファイルとPyCharmファイルを同期しない

コンピュータの電源を入れたときに端末を開いて実行すると、実行が開始され、lsyncd my-lsyncd-profile.lua現在実行中のタスクのリアルタイム更新が印刷されます。私は端末を開いたままにして、lsyncd一日の終わりに仕事を開発して完了します。

私はリモートディレクトリの変更を追跡するためにgitを使用しません。 gitに変更をコミットするには、git commitローカルコンピュータでlsyncd同期する別のコマンドを実行します。~から。ローカルディレクトリは実際にはローカルディレクトリであり、ローカルにインストールされたリモートディレクトリではないため、インデックス作成などのPyCharm機能は正常に機能します。

バックグラウンドモードがありますが、ステータスチェックが好きなので使用しませんlsyncd。標準のLinuxメソッドを使用して自動的に起動するように設定できますが、私は手動の方法を好みます。

lsyncdこのページには同様のユースケースのいくつかの選択肢がリストされているため、このソリューションが気に入らない場合は、そのソリューションを確認できます。

おすすめ記事