myesn

myEsn2E9

hi
github

Gitを使用してファイルの同期を実現する

背景紹介#

軽量で無料のファイル同期ソフトウェアを使用したいと思い、いくつか調べましたが、どれも重く、突然 Git を思いつきました。Git は、マルチユーザーの分散協調をネイティブにサポートしており、Git サーバーもあります。

大まかな原理は、ローカルディレクトリのサブファイルとサブディレクトリの変更を監視し、変更後に自動的に Commit し、repo が Commit を受け取るとフックがトリガーされるため、コールバック操作、つまり自動的な Pull が実現できます。これにより、ファイルの自動アップロードと自動ダウンロードの 2 つの主要なポイントを押さえることができます。

環境の準備#

ソースコードのダウンロード#

ソースコードのダウンロードページに移動する、【クローン / ダウンロード】ボタンをクリックし、【ZIP をダウンロード】をクリックします。以下の画像を参照してください:
image

ソースコードの圧縮ファイルをダウンロードしたら、解凍してください。

次に、cmdを開き、ソースコードのディレクトリに移動します。例えば、D:/git-file-syncと入力し、npm iを入力して、実行に必要な依存ファイルをダウンロードします。

設定の変更#

ソースコード内のsrc/index.tsファイルを開いてください:

// 必須の設定
const user = 'root';
const password = 'P@ssw0rd';
const repo = '192.168.0.228:8080/gitlab-instance-be4f27ff/webhook-tests.git';
const localPath = '/home/xiaoquantang/dev/tests/git-sync/webhook-tests'; // !!ローカルディレクトリで、空のディレクトリであることを確認してください

// オプションの設定
const pushDelayWhenChange = 1000; // ファイルが変更された後、データをアップロードするまでの時間、ミリ秒単位、0より大きい値を推奨します
const httpServerPort = 3000; // HTTPサーバーのポート

以下は必ず入力する必要があります:

  • user:Git のログインユーザー名
  • password:Git のログインパスワード
  • repo:Git リポジトリのアドレス。存在しない場合は、GitLab などのプラットフォームにアクセスしてリポジトリを作成してください。http://またはhttps://のプレフィックスは含めないでください。
  • localPath:ローカル保存ディレクトリ。このディレクトリは空のディレクトリである必要があります。

以下はオプションの設定です:

  • pushDelayWhenChange:ディレクトリ内のファイルまたはサブディレクトリが変更された後、変更を Git リポジトリにアップロードするまでの時間
  • httpServerPort:Git リポジトリのメッセージプッシュを受け取るための HTTP サーバーのポート

GitLab の設定#

ローカルアクセスを有効にする#

【管理者】をクリックし、ページを調整した後、左下の【設定 > ネットワーク】をクリックし、右側で【アウトバウンドリクエスト】を見つけ、最初のオプションをチェックし、変更を保存してください。
image
image

リポジトリに Webhook を追加する#

Git リポジトリを開き、左側の【設定 > Webhooks】をクリックし、右側で以下の操作を行います:

  1. URLフィールドに、http://ここにgit-file-syncプログラムが実行されているホストのローカルIP:3000という形式でアドレスを入力します。ここでの3000ポートは、git-file-syncプログラムが実行された後に作成される HTTP サーバーのポートであり、必要に応じて変更できます。
  2. 【トリガーソース】の下の【プッシュイベント】をチェックします。
  3. 【SSL 検証】の下の【SSL 検証を有効にする】をチェックを外します。
  4. 【Webhook を追加】ボタンをクリックします。

注意:もし 10 台のホストでgit-file-syncを実行している場合、それぞれのホストに HTTP サーバーが作成されますので、10 台のホストの Webhook を設定する必要があります。つまり、リポジトリにプッシュイベントがある場合、GitLab はすべての Webhook にイベントをループして送信します。
image

ファイル同期プログラムの起動#

cmdウィンドウを開き、git-file-syncのソースコードディレクトリに移動し、yarnを入力して依存関係を復元し、最後にyarn devを入力してください。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。