2016-12-13 11 views
-2

私は大量のデータ(〜1TB)を見て、ドライブAからドライブBにコピーする必要があるプロジェクトに取り組んでいます。これはバックグラウンド(またはトレイ)で常に実行され、XX時間/分。その時点で、ドライブAに新しいファイルがあるかどうかをチェックし、ドライブBにコピーします。更新されたファイルがある場合は、それをコピーしてAからBにコピーします。ファイル比較およびコピープログラムの作成方法は?

どこから始めたらいいかわからない。これをPythonやC#で書くべきでしょうか(おそらく視覚的?)誰かが私に助言を与えることができたら、私はそれを高く評価します。ありがとう!

編集:

ただ更新する必要があります。私はWindowsに組み込まれているRobocopyを使用して終了しました。私はPythonから離れて、ドライブAのすべてのファイルをチェックし、ドライブBと比較する小さなバッチファイルを作成しました。新しいものがあるか存在しない場合は、それをコピーします。その後、Windowsに組み込まれたタスクスケジューラを使用してタスクを設定します。文字通り、バッチファイルの1行のコードで完璧に動作します!

+5

ようこそ、あなたが書いたコードを投稿し、それについて働いていないことを説明してください。 – Will

+0

最近、その権利(例えば、fortran、cobolなど)などがあるため、使用する言語についてはあまり分かりません。 – BugFinder

+0

BugFinderに同意すれば、間違いなくPythonで実行可能になります。私はWindowsサービスを作るのがかなり簡単なので、C#を使っていました。 –

答えて

1

私はこのようなものを自分自身で作り始めました。私はおそらくシステムサービスとしてc#でそれを書き、次に新しいファイルを定期的にスキャンするつもりでした。その後、sha1またはmd5のいずれかでチェックサムを作成します。 You can look here about how to generate an MD5 in c#.byte-for-byte vs checksumの比較についての追加情報があります。

ハッシュリストが作成された後、ファイルの転送を実行して、宛先で別のハッシュを実行して、正しく書き込まれたことを確認できます。私はすべてのハッシュにハングアップするつもりだったし、ディレクトリを再スキャンするときに、ファイルが更新されたかどうかを比較するための何かがあります。それで、それはちょうど上記を繰り返します。

+0

ありがとうございます。私は実際には修正日をチェックし、ファイルが新しい場合はダウンロードして置き換えます。どこから始めるべきか分かりません。私が使用できるライブラリはありますか?笑私はちょうどこのようなものから始めるべきところについて混乱している。コアがどのように機能するかを確認した後、残りの部分を把握することができます。 –

+0

Windows用のSystem.IO.Fileのドキュメントは次のとおりです。あなたは、最後の書き込み時間(変更された日付)のようなものを得るためにそれを使うことができます。 https://msdn.microsoft.com/en-us/library/system.io.file(v=vs.110).aspx –

+0

コアについては、トレイアイコンまたはシステムサービスを備えたコンソールアプリケーションを実行することができますhttps://msdn.microsoft.com/en-us/library/zt39148a(v=vs.110).aspxその後、スキャンを定期的に実行するだけで済みます。単純な実装は、このようになる可能性がありますhttp://stackoverflow.com/questions/12535722/what-is-the-best-way-to-implement-a-timer –

関連する問題