web-dev-qa-db-ja.com

コピーされているファイルをロックしないファイルをコピーする方法を探しています

さまざまなバージョンのWindows(xp/7)と1つのLinux(centos)が混在する環境で、さまざまなソースで生成されているデータを集約しています。データはネットワーク共有を介して利用できます。データは、場所ごとに異なるソフトウェアによって生成され、さまざまな間隔でファイルを作成して追加します。ほとんどのデータソースは、私が管理アクセス権を持たないクローズドシステムであるため、状況は非常に複雑になります。

定期的にネットワーク共有に接続し、データを中央の場所に収集して、さらに配布する必要があります。データは24時間年中無休で数週間にわたって生成および収集されています。これは、Windows2008サーバーマシンから実行されます。

これを整理するのに私が抱えている唯一の面倒は、ファイルをロックせずにリモートソースからファイルをコピーすることです。私は最初、robocopyを使用して正常に機能するシステムをセットアップしていましたが、テストの結果、現在コピーされているファイルにデータソースソフトウェアを追加しようとすると失敗することが判明しました。

残念ながら、vssは共有されるボリュームではないため、vssを使用することはできません。

だから、私はそれがコピーされている間ファイルを単にロックしないファイルをコピーする何らかの方法を求めています。コピーの前後の変更時間とサイズをチェックし、違いのあるものにフラグを立ててファイルを処理しています。正確な最新のファイルがないことは問題ではありませんが、ソースでのデータ損失は問題です。

私はさまざまなバックアップソフトウェアソリューションを調べましたが、テストしたものはすべて、vssを使用できないときにファイルをロックします。

非常に単純なもののために、独自のファイルコピーソフトウェアを実装する必要はありません。

3
Steve

[〜#〜] xxcopy [〜#〜] でやりたいことができるかどうかわからないので、 ロックされたファイルへのアクセス に関する投稿を読むことをお勧めします。それ以外の場合は、ステロイドのXCOPY(およびRoboCopy)のように聞こえます。まだサポートされていますが、ビジネスでの使用は無料ではありません(最新バージョンは2013年12月27日にリリースされました)

追加:ドキュメントには、XXCOPY自体はファイルのコピー中にファイルをロックしないと記載されています。

2
JSanchez

別のオプションを追加するために、共有読み取り/書き込みモードでファイルをコピーする FastCopy を見つけました。

それはかなり成熟しているようで、2004年から存在しており、発見されたBSDライセンスの下でオープンソースです ここ 。 XXCOPYが提供するすべての追加のベルやホイッスルが必要なわけではないため、これは優れた代替手段のように思われます。

1
Steve

FileCopy.exe これができると主張していますが、かなり古い(2004)ので、うまくいくかどうかはわかりません。さらに、ネットワーク共有を介して使用した場合に、コピーが非ブロッキングのままであるかどうかは明確ではありません。

もちろん、非ブロッキングコピーを実行することは非常に危険です。そのため、ほとんどのユーティリティはそれをサポートしていません。コピー中にマスターアプリケーションがファイルを更新すると、コピーが破損する可能性があります。

1
Julian Knight