ライブ Web サイトでバックアップとリビジョン管理を維持するための最適なソリューションは何ですか?

StackOverflow https://stackoverflow.com/questions/27292

  •  09-06-2019
  •  | 
  •  

質問

ライブ Web サイトでバックアップとリビジョン管理を維持するための最適なソリューションは何ですか?

仕事の一環として、私はいくつかのライブ Web サイトを操作しています。ライブ フォルダーのバックアップを長期にわたって維持する効率的な手段が必要です。さらに、これらのサイトの更新は、特に何らかの理由で実際の環境に変更が発生した場合には、面倒な作業になる可能性があります。

理想的なのは、手間のかからないソース管理です。私はしばらく SVN を実装しましたが、これはバックアップやリビジョン管理 (一時的な変更や重大な変更を簡単に元に戻す) などの準ソリューションとして最適でした。

残念ながら、SVN は .SVN 隠しディレクトリをあらゆる場所に配置し、特に他の開発者がフォルダー構造を変更したり、Web サイトのディレクトリをコピー/移動したりするときに問題を引き起こします。これは教育の問題だという議論を聞いたことがあります。しかし、SVN が採用したアプローチは、私たちにとって現実的な解決策ではありません。

おそらく増分バックアップ ソリューションの方が良いのではないかと考えています。

その他の可能性としては次のようなものがあります。

  1. SVK, 、これはコマンドラインのみであり、問​​題になります。さらに、これがどの程度適切であるかわかりません。
  2. マーキュリアル, おそらく、分散コンポーネントを非表示にするいくつかのトリガーが含まれていますが、この場合は不要であり、他の開発者にとっては不必要に複雑になるでしょう。

    Mercurial を簡単に試してみましたが、リポジトリを分離し、ライブ フォルダーの作業コピーと常に同期を保つための良い方法が見つかりませんでした。おそらく、ソース管理ソリューション (リポジトリとライブ フォルダーを同じ場所に作成する) と別のバックアップ ソリューションを組み合わせた場合、これが最適な方法になる可能性があります。

    Mercurial の欠点の 1 つは、空のフォルダーをソース管理下に配置しないことです。これは、ファイルのアップロードなどのプレースホルダーの場所として空のフォルダーを使用することが多い Web サイトにとっては問題です。

  3. Rsync, 、実際には調べていません。

ライブ Web サイトのバックアップを維持するための最良の方法、理想的には過去のバージョンをすぐに取得できる簡単な手段についてのアドバイスをいただければ幸いです。

回答の返信:

  • @キビー:

    • これは教育というよりも、VSS 以外のことについての知識がなく、他のことを学ぶための時間や労力が不足していることが原因です。

    • xcopy/7-zip のアプローチは合理的だと思いますが、すぐに多くのスペースを占有してしまいますよね?

    • ソース管理に関して言えば、ソース管理には「今のフォルダーの状態はこれです。私が対処します。一致しない場合はあなたのせいです。」とだけ言ってもらいたいと思います。大きな失敗をするよりも、新しい歴史を始めるだけです。」

  • @スティーブM:

    • そうですね、それはより良い方法ですが、大幅な文化的変化が必要になります。とは言っても、私はこのアプローチがとても気に入っています。
  • @mk:

    • そうですね、Rsync を使用してデプロイすることは考えていませんでした。これは差分だけをアップロードするのでしょうか?変更を加えるたびにライブ ディレクトリ全体を上書きすると、サイトのダウンタイムが発生して問題が発生します。

もっと伝統的なオプションがあるかどうかを知りたいと思っています

役に立ちましたか?

解決

SVN は引き続き使用できますが、実際の環境でチェックアウトを行う代わりにエクスポートを実行すると、.svn ディレクトリは作成されません。もちろん、欠点は、実際の環境でコードを変更できないことです。これは良いことです。

原則として、運用システム上のコード変更は決して許可されるべきではありません。変更は開発/テスト/UAT 環境で作成およびテストする必要があり、OK であることが確認されたら、SVN でそのコードに RELEASE-x-x-x などのタグを付けることができます。次に、ライブ システム上で、そのタグを含むコードをエクスポートします。

他のヒント

オプション 3 を使用します。再同期。これを行うための bash スクリプトと追加のチェックを作成しましたが、その動作の基本は次のとおりです。

  1. 推し活用タグ作ります。
  2. そのタグに対して svn export を実行します。
  3. rsync を生きます。

これまでのところうまくいっている。ユーザーの競合を心配したり、実稼働マシンで svn up を実行するために別のユーザーを用意したりする必要はありません。

ユーザーがファイルを移動、削除、または追加し、それをソース管理システムに伝えなかった場合、選択したソース管理ソリューションには問題が発生します。この問題を解決できるソース管理項目を私は知りません。

プロジェクトに取り組む人々を教育できない場合[1]は、毎日のスナップショットを使用する必要があるかもしれません。xcopy を使用してネットワーク ドライブにバッチ ファイルを作成し、場合によってはコマンド ラインで 7-zip を使用して圧縮し、スペースをあまり占有しないようにするのと同じくらい単純なものが、おそらく最も簡単な解決策となるでしょう。

[1] 私はこれをまったく信じられません。おそらく、人々があまりにも頑固で、学ぼうとしない、あるいは「余分な仕事」をしようとしないというだけのケースでしょう。以前のバージョンに戻す必要がある場合、または 2 人が同じファイルを編集した場合に、ソース管理によってどれだけの時間が節約されるかは気にする必要はありません。

rsync は差分のみをアップロードします。個人的には使ったことはありませんが、 マーク・ピルグリム それがどのようにして起こるのかについてずっと前に書きました バイナリ差分を見事に処理します.

svn+rsync は素晴らしいソリューションのように思えます。将来的にはそれを試してみる必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top