私は音声分析と文法分析を多く含む授業を受けています。授業では Windows 10 ネットワークのアカウントが与えられました。私は Mac と Linux の方がずっと使い慣れているので (Windows の使用可能時間が限られているため)、Mac のラップトップで作業を行っています。
NTFS ディレクトリを自動マウントしましたが、LAN に問題があり、一部のアプリが読み取り専用アクセスしかできなかったり、まったくアクセスできなかったりすることがよくあります。
その結果、私はローカルコピーで作業し、頻繁にrsyncしかし、rsync*は常にすべてのNTFSディレクトリを更新します。ディレクトリのみで、ファイルは更新されません(実際に変更したものを除く)。それらのディレクトリのほとんどは、私がまだ移動したことがないものです。rsyncサブディレクトリ ツリー全体の更新を報告します。大きな問題ではありません (数秒で完了します) が、それでもかなり奇妙です。
Windows と NTFS は、アクセスされることのないディレクトリに対して何を実行し、rsync に変更があると認識させるのでしょうか?
答え1
精度を下げて更新時間の比較を許可する
--modify-window=5
NTFS パーティションにマウントするこのタイプのセットアップでは、デフォルト値を増やして、精度を下げて変更時間を比較できるようにするなど、適切なパラメータを使用するようにする必要があります。
--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).
その他のリソース
答え2
まず、プログラムの読み取り専用問題にお答えします。ネットワーク共有は Windows によって制御されるため、Windows では特定のユーザー権限のみが許可されます。これはパブリック共有である可能性があり、つまり、誰でもファイルなどをダウンロードして表示できますが、変更するには明示的に追加する必要があります。Linux に似た Mac を使用しているためです。使用しているすべての Linux アプリケーションが、Mac または Linux で現在ログインしているユーザー名と同じユーザー名を使用しているわけではありません。したがって、プログラムはログインしているユーザー名を使用していないため、ユーザー名が一致しないため、Windows に従ってファイルを編集する権限は与えられません。
第二に、rsync は再帰的です。つまり、すべてのディレクトリを調べます。特定のディレクトリに制限しない限り、または 1 つのディレクトリに制限した場合でも、開始したディレクトリ内のすべてのディレクトリを調べ続けます。これが rsync の設計目的です。したがって、再帰同期と呼ばれます。ディレクトリを更新してファイルを更新しない理由は、rysnc がディレクトリからタイムスタンプを取得する方法にある可能性があります。Windows 10 のディレクトリには変更またはアクセスされたタイムスタンプがなく、ディレクトリが作成されたタイムスタンプのみがあるのに対し、ファイルにはこれらすべてのタイムスタンプがあり、rsync はこれを使用してディレクトリまたはファイルを更新する必要があるかどうかを判断します。