2009-06-30 9 views
6

私は約80ギガバイトのファイルの束のスナップショットを行うために、素早く、あまりにも汚い方法を探しています。ここで問題となるのは、ファイルの多くが1GBほどの大きさであるということです。巨大なファイルのバージョン管理システム?

このタイプのもののための最高の無料バージョン管理システムは何ですか?

私はZFSがオプションだと知っていますが、まず何か他のものを試してみたいと思います。

+0

asciiまたはバイナリ? – Johan

+0

バイナリ - 私はasciiとバイナリを区別するアルゴリズムを持つ現代版の制御システムは知らないが、 私はそれを試し、結果をここに掲載します。 –

+0

最初のコミットはビジー状態で、file://プロトコルを使用して、サブバージョンは平均1.5 MB /秒を転送しています。かなり遅いです。 –

答えて

6

Subversionは大部分が良い性格冷静であなた> 1GBのファイルを扱うが、多くの大規模な変更がある場合

Subversion Best practices

が大きなファイルのセクションを持っている...差分の世代はしばらく時間がかかることを期待します。

Subversionの優れた点は、設計上、処理できるファイルのサイズが に制限されていないことです。ファイルは、サブバージョンクライアントとサーバーの間の の両方の方向で、ネットワークの両側に一定量の小さいメモリ量の を使用して、「ストリーリーに」送信されます。

もちろん、実際に考慮する必要があります。 キロバイトの範囲のファイル(例えば、 の標準ソースコードファイル)を心配する必要はありませんが、大きなファイルをコミットすると、 または数百メガバイトのファイルなど、多くの場合、 という膨大な量の時間とスペースが必要になります。大。)

をあなたのSubversionはの.svn /テキストベース/ 領域にコピー格納し、すべてのバージョン管理されたファイルの 手付かずのコピーを働いていることを覚えて、まず始めに。これは、作業コピーが、元のデータセットと同じくらい多くのディスク容量を、 の2倍以上使用することを意味します。さらに、Subversion クライアントは、 ファイルをコミットする(現在は調整不可能な)アルゴリズムに従います。

です。 .svn/tmp /にコピーします(少し時間がかかり、余分なディスク容量を一時的に使用します)

tmpファイルと オリジナルコピーの間、またはtmpファイルと空ファイルの間のバイナリdiffを実行します(新規の場合は が追加されます)。 (最終的には、ネットワーク上で小さい数字の のデータしか送信されない場合でも、計算に時間がかかることがあります)

diffは、サーバに送信し、あなたのファイルの大きさに理論上の制限はありませんしながらそうの.svn /テキストベース/

に をTMPFILEを移動すると、あなたは 非常に大きなファイルがあることに注意してくださいする必要がありますあなたのクライアントが悩まされている間にかなりの数の患者が待つことがあります。 しかし、あなたは大きなファイルが サーバを無力化したり、他のユーザに影響を与えたりすることはありません。 しかし、CVSとは異なり、あなたは安心することができます。

+3

私たちは約2週間この目的のために今Subversionを使用してきました。 130,000件のファイルにまたがる約80ギガのデータセットのチェックインは、毎晩約1時間かけてチェックインされます。毎日のデルタは50メガです。データセット内の最大の単一ファイルは800メガバイトです。 –

+0

素晴らしいもの、ベン。 これはうってつけです。 –

3

実際にMonotoneを試してみるといいかもしれませんが、ちょっと調べてみてください。あなたはそれであなたが探しているものを見つけるかもしれません。

+1

モノトーンサミットでは、モノトーンそのものを使って2GB分の写真を交換しましたが、かなり速かったです。 – lapo

関連する問題