/home
私のディレクトリの自動バックアップを実行しようとしています。理論的には、cronjobで実行するのは簡単です。
cd /home
git add .
git commit -m "nightly backup"
git push
そのうち、プッシュは変更をリモートバックアップサーバーにプッシュすることです。
私が持っている問題は、/home
ディレクトリにgit repoがある場合です/home/tom/projects/myproject/.git
。バックアップジョブが実行され、すべての変更がサーバーにプッシュされます。ただし、ストレージを含むサーバー上のすべてのディレクトリは空です。
私はこれを実現するできるサブモジュールによって処理されます。しかし、ここにはいくつかの欠点があります。
各サブモジュールは親リポジトリに登録する必要があります。 (これは自動化することができますが、各ディレクトリに繰り返しすべてのcronを実行するときにサブモジュールを追加することは少し苦痛になります。)
サブモジュールのコミットされていない変更はバックアップされません。これはバックアップにとって理想的な動作ではありません。他の場所で追跡されているかどうかに関係なく、現在のすべてのファイルのリアルタイムスナップショットが必要です。
私はこれを行うことができる他のツール(rsyncなど)があることを知っていますが、時間が経つにつれてgitが変更を追跡することをお勧めします。 gitが他のリポジトリを通常のファイル(.gitディレクトリを含む!)として扱うようにする方法はありますか?
この問題に対する解決策は、cronで次のことを実行することです。
- すべてのサブディレクトリに再帰
- .gitフォルダを探す
- .gitの名前を別の名前に変更します。
- 次に、標準の追加/コミット/プッシュを実行します。
この方法は機能しますが、復元プロセス中にすべての.gitフォルダの名前を変更する必要があります。これらのオーバーヘッドなしでこれを達成する方法はありますか?
ベストアンサー1
GitのGitは少し狂った:)
- gitignoreディレクトリにリポジトリを追加してみてください。
- コミットする前にリポジトリをアーカイブするには、cronスクリプトコマンドを追加します。
- (オプション)含まれるすべてのリポジトリの自動コミット/プッシュを設定します。
IMHO、1と2があなたに良いです。
cd /home
tar -zcvf my-gits-backup.tar.gz path/to/git/projects
git add .
git commit -m "nightly backup"
git push