web-dev-qa-db-ja.com

ファイルのコピー:ファイルが同一の場合、Windowsはディスクに書き込みますか?

PDFフォーマット(約2GBサイズ))の本がたくさんあるディレクトリがあります。

読んでいる間、ファイルにメモや注釈を残すことがよくあります。時々、外付けハードドライブにバックアップを作成します。前回のバックアップ以降に変更されたファイルを覚えていないので、全体をコピーして上書きします。

Windowsは、上書きする前に、同じ名前のファイルが(内容によって)同一かどうかをチェックしますか?そうでない場合、これを正確に行うにはどうすればよいですか?

30
Doflaminhgo

ロボコピー。

Windowsエクスプローラーを使用してコピーする場合、Windowsは同一のファイルと変更されたファイルを区別できません。

Windows can Windowsに含まれているファイルコピーユーティリティであるRobocopyを使用してコピーすると、同一ファイルと変更されたファイルを区別します(Vista、7、8.1、 10)。

サードパーティのツールを使用する必要はありません。

このスクリプトをバッチファイルとして保存し、バックアップを実行するときにいつでも再実行できます。

robocopy /e c:\PDFs p:\PDFs

  • PDFファイルに注釈が付けられ、変更が保存されると、そのファイルの最終変更属性とサイズ属性の両方がソースフォルダーで変更され、次回Robocopyのときに宛先フォルダー内の対応するファイルの上書きがトリガーされますが呼び出されます。
  • Robocopyは、ソースと宛先の両方に存在するすべてのファイルのサイズと最終変更属性を比較します。どちらかの属性が異なる場合、宛先ファイルは上書きされます。注:これらの値はdifferentである必要がありますが、必ずしも新しいまたは大きい必要はありません。ソースファイルにolder Last Modifiedまたはsmaller Size属性がある場合でも、ソースは宛先を上書きします。
  • すべてのPDFがスクリプトで参照されているフォルダーのルートにある場合、/e(または/s)スイッチは不要ですが、サブフォルダーを含める場合は、 /sを使用します。サブフォルダーとEmptyサブフォルダーを含める場合は、/eを使用します。
  • バックアップドライブにアルファベットでさらに文字を割り当てます。そのため、スクリプトで使用されているドライブ文字が別のドライブに誤って割り当てられて、将来バックアップが失敗するリスクはありません。ここではPDFにPを使用しました。

その単純なスクリプトで十分です。

62
Mr Ethernet

Windowsはこれを行いません。ただし、同じ名前のファイルを上書きするように求められ、必要に応じて手動で選択できます。

より簡単な解決策として、 FreeFilesSync を使用してフォルダーを比較し、変更/更新されたファイルのみを上書きします(ミラーオプションとFile time and size in 比較設定 )。

6
xypha

はいといいえ! Windows Explorerはメタデータ(ファイルサイズ、日付など)のみをチェックします。

ただし、スクリプトを使用できます。 powershellここを参照 )(ほとんどの)Windowsまたはサードパーティツールに付属ファイルチェックサムを使用してファイルを比較/コピーできます。 MD5またはSH1ハッシュ( ここを参照 または 検索エンジン を使用)。

私自身、ソフトウェアchecksum compareここを参照 )を使用するのが好きです。これにより、ファイルのチェックサムやUSBペンドライブから動作します。

ファイルの内容を比較する必要がなく、「新しい」ファイルをコピーするだけの場合は、xcopy、robocopyなどの事前コピー方法を使用できます

注:異なるハッシュ方式には長所と短所があります(主に信頼性と速度)。私にとって、MD5はこのタイプのファイル比較には十分ですが、それは個人的な好みです。 ここを参照 そのトピックの詳細については

4
Albin

つまり、いいえ

Windowsはそれを簡単な方法で点在させません。

まあ、それはしますが、Windowsのすべてのように、よくてもあいまいです。名前の競合を求めるプロンプトが表示され、Windowsのバージョンに応じて、選択可能ないくつかのオプションと、多少のわかりやすいダイアログが表示され、追加のメモ(「何とか、違うサイズ、新しい」)が表示されます。次に、変更されたファイルを保持するかどうかを1つずつ選択し、これをすべての「同一」の一致に適用するオプションがあります。
もちろん、これはWindowsなので、「新しい」が実際に新しいことを意味する保証はなく、「同一」が何であるかがわかりません(名前が衝突しているだけで、サイズが変化しているのでしょうか。変更日、またはそれすべてですか?).

代替案

フリーとコマーシャルの両方の非常に多様なファイル同期プログラムが存在します。これらは、ファイルが上書きされる前に変更されているかどうかを確認する限り、いくらか優れていますrsyncすべてのツールの伝統的な母であるだけでなく、一部の人々が望むよりもユーザーフレンドリーではないという一口である。
ただし、基本的に物事を改善しているわけではないため、これらを推奨することはできませんが推奨しません

個人的には、少しのコマンドラインを恐れていない場合(常にバッチファイルを作成できます!)Matt Mahoneyの優れた zpaq をお勧めします。これは基本的にZipですが、圧縮率がはるかに高く、オンザフライで重複排除が行われます。

どのようにそれより良いですか?

ええと、チェックサム比較ツールはすべて素晴らしいです。特にネットワークを介する場合、両端で実行されているrsyncに勝るものはありません。しかし、典型的な同期ツールはうまく機能しますが(エクスプローラーよりも優れています)、これが最適な方法ではありません。

チェックサムを比較するかどうかに関係なく、外付けドライブへの書き込みには、対処する必要があるいくつかの事項があります。

  • ドライブのアクセス時間(異常)
  • USB経由のレイテンシまたは使用するもの(より良くなるが、それでも少しひどい)
  • 帯域幅(実際には今日はかなり良い
  • ドライブの書き込み(および増幅)
  • ドライブの読み取り

チェックサムを比較するには、まずファイルを読み込む必要があります。フルストップ。つまり、数千のファイルに対して、ディレクトリ構造をトラバースし、高レイテンシのリンクを介してファイルを開き、ファイルを数千回読み取ることによるレイテンシを支払うことになります。さらに、レイテンシの高いワイヤを介して小さな単位で転送します。まあ、それは非常に時間がかかる、それは非常に高価なプロセスです。

次に、変更されたファイルを書き込む必要があります。ここでも、ファイルを開く、データを上書きするなど、いくつかの高遅延操作を行い、1つずつ繰り返します。これはtwiceを吸引します。これは、本質的に安全でない(猫がUSBケーブルでつまずくとファイルが失われる)だけでなく、最新のshingling ハードドライブ(多くの外付けドライブなど)。運が悪ければ、非常に遅く、1秒あたり1メガバイトに低下する可能性があります。それと、何千もの小さな転送のレイテンシが増えています。
適切に作成されたファイルコピーツールは、一時ファイルをコピーし、その後でアトミックに名前を変更することで安全性の問題に対処できる場合があります(ただし、これによりオーバーヘッドがさらに増加し​​ます!)。

現在、zpaqのようなアーカイブ形式は、ファイルのチェックサムをすでに含んでいるアーカイブを作成します。これらのファイルは、1つの場所から迅速かつ順次に読み取ることができます。次に、ローカルで(ローカルでは、ケーブルの「側」を意味します。SATAまたはM.2などを介してかなり高速のディスクが接続されていると考えられます)、チェックサムを比較し、差分を圧縮して、append-only既存のアーカイブに圧縮データを順次書き込みます。はい、これは、あなたがすべての歴史を持ち歩いているため、アーカイブが時間とともに少しずつ大きくなることを意味します。悲しいかな、それを乗り越えてください、コストは差分と圧縮のおかげで非常に中程度です

この方法は、より高速で安全です。途中でケーブルを引っ張ると、現在のバックアップが中断されます(明らかに!)。ただし、以前のデータは失われません。 「低速」リンクを通過するすべてのトランザクションは、厳密にシーケンシャルな大規模転送であり、スループットを最大化します。

3
Damon

XCOPY/Dは、ソースが宛先より新しい場合にのみファイルをコピーします。 (再帰的コピーの場合はXCOPY/S/D)

1
Daniel Klugh

Microsoft SyncToy

MicrosoftはSyncToyと呼ばれる優れたWindows PCアプリを作成します。ここでは、「左フォルダーと右フォルダー」のペアを指定し、変更を左から右にエコーするか、右から削除せずに左から右に変更を提供するか、左と右を同期します。コミットする前に変更をプレビューするためのユーザーインターフェイスがあります。

ファイルが同一であると検出された場合、そのファイルはスキップされます。これは、探している機能です。

私は約10年間エコーモードを使用して、デスクトップPCから外部ドライブへの変更を段階的にミラーリングしています。

https://www.Microsoft.com/en-us/download/details.aspx?id=15155

0
StalePhish