web-dev-qa-db-ja.com

ソースが変更されていないのに、rsyncがNTFSディレクトリを更新するのはなぜですか?

音声と文法の分析がたくさんあるクラスを受講しています。彼らは私にWindows10ネットワーク上のアカウントを与えてくれました。私はMacとLinuxにずっと慣れているので(そしてWindowsの利用可能時間は限られているので)、Macラップトップで仕事をしています。

NTFSディレクトリを自動マウントしましたが、LANに問題があるため、一部のアプリには読み取り専用アクセスがあるか、まったくアクセスできないことがよくあります。

その結果、私はローカルコピーで作業し、頻繁にrsync変更します。ただし、rsync *は常にすべてのNTFSディレクトリを更新します。ディレクトリのみを更新し、ファイルは更新しません(実際に変更したものを除く)。それらのディレクトリのほとんどは、私がナビゲートしたことはありませんが、rsyncは、サブディレクトリツリーの最後まで更新を報告します。メジャーではなく、数秒で終了しますが、それでもかなり奇妙です。

WindowsとNTFSは、rsyncに変更されたと思わせる、アクセスされないディレクトリに対して何をしますか?

2
WGroleau

精度を下げてmod時間の比較を許可する

このタイプのセットアップでは、NTFSパーティションにマウントし、--modify-window=5などの適切なパラメータを使用してデフォルト値を増やし、精度を下げてmod-timeを比較できるようにします。

--modify-window 

    When comparing two timestamps, rsync treats the timestamps as
    being equal if they differ by no more than the modify-window value. This 
    is normally 0 (for an exact match), but you may find it useful to set 
    this to a larger value in some situations. In particular, when
    transferring to or from an MS Windows FAT filesystem (which represents               
    times with a 2-second resolution), --modify-window=1 is useful (allowing 
    times to differ by up to 1 second).

その他のリソース

1
Pimp Juice IT

_-a_の暗黙的なオプションを_--no-OPTION_で明示的に除外する

コメント:

「rsync-av --bwlimit = 200 --delete --modify-window = 5(HFS +)(NTFS)」にmodify-windowを追加すると、未訪問のディレクトリの更新が停止しました。しかし、1日後にそれは再びそれをしました。すぐに繰り返しても更新されませんでした。 Windowsにログインすると、再び発生しました。しかし、それ以来、Windowsにログインしているかどうかに関係なく、毎回発生します。 rsyncコマンドがわずか1秒離れている場合でも。繰り返しになりますが、不要な更新があっても、1秒しかかからないので、大したことではありません。ただし、ファイルリストの読み取りは不便になります。 WGrolea

解決策としてこれらのオプションを使用したテストを検討してください:

  • _  --size-only             skip files that match in size
      -c, --checksum              skip based on checksum, not mod-time & size
      -O, --omit-dir-times        omit directories from --times
    _

    ソース


さらに。 。 。

_-a_(_--archive_)には暗黙的なオプションが含まれているため、_-rlptgoD_オプションと同等です。

  • _-r, --recursive             recurse into directories
    -l, --links                 copy symlinks as symlinks
    -p, --perms                 preserve permissions
    -t, --times                 preserve modification times
    -g, --group                 preserve group
    -o, --owner                 preserve owner (super-user only)
    -D                          same as --devices --specials
    _

    ソース

同期しているこれら2つの異なるファイルシステム間で特定の属性が比較されないようにするには、これらのオプションの一部を_--no-OPTION_で明示的に省略する必要がある場合があります。

たとえば、次のいずれかを追加します。

  • _--no-o_は所有者属性を無視します
  • _--no-g_はグループ属性を無視します
  • _--no-times_は時間属性を無視します

重要:オプションの順序は重要です:_--no-r -a_を指定すると、_-r_オプションがオンになり、_-a --no-r_の反対になります。

  • _--no-OPTION
    
        You may turn off one or more implied options by prefixing the option name
        with lqno-rq. Not all options may be prefixed with a lqno-rq: only options   
        that are implied by other options (e.g. --no-D, --no-perms) or have 
        different defaults in various circumstances (e.g. --no-whole-file, --no-
        blocking-io, --no-dirs). You may specify either the short or the long option 
        name after the lqno-rq prefix (e.g. --no-R is the same as --no-relative).
    
    For example: if you want to use -a (--archive) but don't want
    
        -o (--owner), instead of converting -a into -rlptgD, you could specify -a --
        no-o (or -a --no-owner).
    
    The order of the options is important: if you specify --no-r -a, the
    
        -r option would end up being turned on, the opposite of -a --no-r. Note also 
        that the side-effects of the --files-from option are NOT positional, as it '   
        affects the default state of several options and slightly changes the 
        meaning of -a (see the --files-from option for more details).
    _

    ソース


その他のリソース

0
Pimp Juice IT

プログラムの読み取り専用の問題に最初に答えます。ネットワーク共有はWindowsによって制御されるため、Windowsは特定のユーザーにのみ許可を与えます。それはパブリックシェアである可能性があります、IE誰でもファイルをダウンロードするためにそれを見ることができますが、そうすることができるように特別に追加されない限りそれを変更することはできません。あなたはMacを使用しているので、 Linuxへ。使用しているすべてのLinuxアプリケーションが、MacまたはLinuxで現在ログインしているのと同じユーザー名を使用しているわけではありません。したがって、プログラムはログインしたユーザー名を使用していないため、編集する権限が与えられていません。ユーザー名が一致しないため、ウィンドウに従ってファイル。

第二に、Rsyncは再帰的です。つまり、すべてのディレクトリを通過します。特定のディレクトリに制限しない限り、1つのディレクトリに制限しても、開始したディレクトリにあるすべてのディレクトリを通過し続けます。これは、そのように設計されたものです。したがって、それは再帰的同期と呼ばれます。ここで、ファイルではなくディレクトリを更新する理由は、rysncがディレクトリからタイムスタンプを取得する方法である可能性があります。 Windows 10ディレクトリには変更またはアクセスされたタイムスタンプがないため、ディレクトリが作成されたときのタイムスタンプのみが含まれているのに対し、ファイルにはこれらすべてのタイムスタンプがあり、rsyncがディレクトリを更新する必要があるかどうかを判断するために使用するか、ファイル。

0
Frostalf