0

WindowsでcwRsync 5.4.1 x86 Freeを使用しており、フォルダーをネットワークドライブに同期しようとしています。次のコマンドを実行します。

rsync.exe -rLtv --delete --ignore-errors "/cygdrive/d/1/" "/cygdrive/z/ZipNB/"

D はローカル ドライブ、Z はネットワーク ドライブ (ルーター、RT-N16 に接続された外付け HDD) を数回実行しても同じ結果が得られます。

>rsync.exe -rLtv --delete --ignore-errors "/cygdrive/d/1/" "/cygdrive/z/ZipNB/"
sending incremental file list
./
1.pdf

sent 11,893,922 bytes  received 38 bytes  1,829,840.00 bytes/sec
total size is 11,890,918  speedup is 1.00

フォルダーに1つのファイルがあり、実行ごとにそのコンテンツを送信します。ファイルは毎回同じで、途中で変更されていません。

追加のパラメーター --size-only を追加すると、期待どおりに機能します。

>rsync.exe -rLtv --delete --ignore-errors --size-only "/cygdrive/d/1/" "/cygdrive/z/ZipNB/"
sending incremental file list
./

sent 72 bytes  received 22 bytes  188.00 bytes/sec
total size is 11,890,918  speedup is 126,499.13

両方のディレクトリの DIR:

D:\1>dir
    Volume in drive D is XXX
    Volume Serial Number is XXXX-XXX

Directory of D:\1

08.12.2016  10:04    <DIR>          .
08.12.2016  10:04    <DIR>          ..
24.11.2016  18:31        11 890 918 1.pdf
           1 File(s)     11 890 918 bytes

Z:\ZipNB>dir
 Volume in drive Z is BackUp (at Portable)
 Volume Serial Number is XXXX-XXX

 Directory of Z:\ZipNB

08.12.2016  10:04    <DIR>          .
08.10.2016  20:40    <DIR>          ..
24.11.2016  18:31        11 890 918 1.pdf
           1 File(s)     11 890 918 bytes

よくわかりませんが、デフォルトでrsyncが変更時間とサイズによってファイルの検証を行うことを知っているためです。両方のファイルは同一のようです。しかし、何らかの理由で cwRsync が Z ドライブのファイルの変更日を間違って取得/設定しているようです。両方のディレクトリがローカル ドライブにある場合、cwRsync は正しく機能します。ネットワークドライブでのみ発生します。

Windows のプロパティでは、1 秒あたりの変更時間に違いがあり、これが問題を引き起こす可能性があります。 ウィンドウのプロパティ

出力を簡単にするために、例として1つのファイルのみを取り上げました。状況は同じで、さまざまなファイルがいくつあっても同じです。常に各ファイルの完全なコンテンツを送信します。ここで何が間違っている可能性があり、どうすれば修正できますか?

4

1 に答える 1

1

File Timesから、ネットワーク共有上の HDD が FAT を使用していると推測しています。

たとえば、FAT の作成時間の分解能は 10 ミリ秒ですが、書き込み時間の分解能は 2 秒、アクセス時間の分解能は 1 日なので、実際にはアクセス日付です。

それは時間差を説明するでしょう。

このような理由から、 rsyncは--modify-windowオプションを追加しました。

-@, --modify-window

2 つのタイムスタンプを比較する場合、rsync はタイムスタンプの違いが変更ウィンドウの値を超えない場合、これらのタイムスタンプを等しいものとして扱います。デフォルトは 0 で、整数秒に一致します。負の値を指定した場合 (およびレシーバーが少なくともバージョン 3.1.3 の場合)、ナノ秒も考慮されます。1 を指定すると、MS Windows FAT ファイルシステムとの間でコピーを行う場合に便利です。これは、FAT が 2 秒の分解能で時間を表すためです (元の時間と最大 1 秒の差を許容できます)。

したがって、コマンドに-@1を追加してみてください。

于 2016-12-14T19:06:55.683 に答える