web-dev-qa-db-ja.com

(Linux)サーバーでの自動ファイルシステムバージョン管理

したがって、基本的には、フォルダー(およびそのサブフォルダー)の変更を監視し、何らかの形式のバージョン管理を適用する(つまり、ファイルを復元できる場所から「データベース」などを保持する)Linuxソフトウェアを探しています。

従来のSCM(GIT、SVN、HGなど)でこれを実行できない理由は2つあります。

  • 監視とバージョン管理は自動である必要があります(注文基準は時間のみです)
  • 私が必要とするソフトウェアは、SCMとは異なり、特定のことを実行することです。SCMでは、より多くのことを実行します(もちろん、かなりエラーが発生しやすくなります)。

これが実行されるサーバーは管理されていないVPSであるため、かなりの制御が可能ですが、バージョン管理ファイルシステムパーティションをインストールするのに十分ではないのではないかと思います。

その間、私がチェックアウトしたことを知っています wayback すでにですが、7年前(2004年)に最後に更新されたソフトウェアを使用することに感心せず、躊躇していません。

他のサーバー障害者に頭痛の種を伝えて申し訳ありませんが、私はそれを助けることはできません;)

編集:ちなみに、これはCLIベースであることが望ましいですが、他の方法も大歓迎です!

編集2:linuxなどをbashするのではなく、linux(unix)のシグナルの概念を使えば、これを書くのはそれほど難しくないはずです(もちろん専任チームによる)。

実際、私はすでにこれを行っているシステムを使用しています( Dropbox )が、目的が異なるため、バージョン管理は30日に制限されています(バージョン管理はオンラインストレージに保持されます) 。しかし、それはその概念が完全に可能であることを示しています。

2
Christian

Zoredacheが提案したようにrsyncを使用したくない場合、私の次の提案は、変更を監視するために inotify を使用するスクリプトを作成することです。それほど難しいことではありません。

次に、スクリプトが変更されたファイルを従来のバージョン管理システム(svn、gitなど)に自動的にコミットするか、ファイルの最後のXバージョンを他の場所に保持するかを決定します。

1
Steven

それは本当にファイルレベルで変更されたバージョンを持っていますか、それとも定期的なスナップショットを受け入れますか?

定期的なスナップショットを受け入れる場合は、dirvishやrsyncなどを直接使用できます。基本的に、ファイルシステムの完全なコピーを作成すると、それ以降のコピーは同一のファイルをハードリンクし、新しいファイルと変更されたファイルは別々になります。

Dirvishは基本的に rsync のフロントエンドであり、-link-destオプションを使用します。

ユーザーはどのようにファイルシステムにアクセスしていますか? webdav経由でのアクセスはオプションですか? ApacheでSVNをセットアップし、 autoversioning を使用できます。

1
Zoredache

私はこれを行う1つの方法を知っています。これは独自のファイルシステムであり、他にもたくさんのものが付属しているため、非常に高価になりますが、探していることのほとんどを実行します。これはNSSと呼ばれ、NovellのOpen Enterprise Server 2に同梱されています。Waybackとは異なり、実際には引き続きサポートされています。これは、「サルベージ」ツリーと呼ばれるものを保持します。これにより、ボリュームの空き領域から20%を引いた量の「削除された」データが保持されます(これは構成可能です)。

1つの注意点は、特定のファイルのリビジョンを追跡せず、削除されて新しい情報で再作成されたファイルのみを追跡することです。したがって、Excelファイルは追跡されますが、Accessデータベースは追跡されません。

NSS Salvageは、ボリュームに残っている空き容量に応じて、特定の期間のみを追跡します。これを自動化されたシステムと組み合わせて、ファイルをSalvageから従来のリビジョン管理システムにプルすると、非常に強力なソリューションが得られます。ただし、Novellを扱うことを意味します。

0
sysadmin1138