web-dev-qa-db-ja.com

NTFS / FATとEXTの間でrsyncが機能しない

FAT32 USBスティックから車で再生する音楽があります。曲を置くために使用するフォルダーは、EXT4ハードドライブに保存されています。定期的に曲を追加/削除/タグ付けし直しますが、USBスティックの変更をrsyncしたい場合があります。しかし、何らかの未知の理由(おそらくアクセス権?)で、rsyncは、変更されたファイルではなく、毎回すべてのファイルをコピーします。私はrsyncを呼び出しています:

rsync -vrlptgD source dest

希望どおりに機能させるにはどうすればよいですか(つまり、ファイルが変更されていないことを知り、コピーしないでください)?

13
wim

Javier Riveraの答えは機能しますが、rsyncがすべてのファイルのチェックサムをチェックして比較するのにかなり時間がかかります。次のオプションを使用すると、私にとってはうまくいくことがわかりました。

rsync -rtv --modify-window=1 /source /dest

--modify-window=1スイッチを使用すると、タイムスタンプで±1秒の変動を許容できます。このオプションを有効にすると、タイムスタンプの比較がより緩やかになり、NTFS/FATとUnixファイルシステム間のごくわずかな時間の違いを確認できます。

ソース(ger): http://www.kai-hildebrandt.de/tutorials/rsync.html

追伸:DSTにより1年に2回完全なファイル転送が行われることに注意してください。詳細と可能な解決策については、 here を参照してください。

17
Glutanimate

FAT32のタイムスタンプはUNIXのものとは異なりすぎてファイルの変更を確認できません。-cスイッチも使用する必要があります。動作しますが、遅いです。

最後に、コマンドにはFAT32ファイルシステムでは機能しないオプションがいくつかあります。

  • -lはリンクを保持します。FAT32にはリンクの概念はありません
  • -pはアクセス許可を保持しようとしますが、FAT32にはアクセス許可がありません。
  • -tは変更タイムスタンプを保持しようとします。FAT32にはタイムスタンプが1つしかありません
  • -gはグループの所有権を保持しようとしますが、再びFAT32ではサポートされません
  • -Dは、特別なファイルとデバイスを保存しようとします。

Htorqueコメントとして、無効なオプションはあなたを傷つけることはありません、彼らは何もしません。ただし、-cスイッチを追加する必要があります。

この:

rsync -vrc source dest

動作するはずです(少なくとも私のコンピューターでは動作します)。

11
Javier Rivera

OSXでも同様の問題が発生していましたが、グルタナメートの答えは役に立たなかった。一部のファイルは1時間異なります。これは、私がタイムゾーンを比較的頻繁に横断する傾向があるためです。他のファイルは1日または1か月もずれています。これがなぜなのか分かりません。タイムスタンプが大きく異なるいくつかのファイルのチェックサムは、それらが実際に同一であることを示しています。

いずれにしても、--size-onlyオプションは、rsyncにタイムスタンプを無視するように指示するように見えますが、私の目的には機能します。 -c/--checksum(Javierによると)も機能しますが、少し時間がかかります。時間を計ると、作業中のサブディレクトリでGB程度のチェックサムを比較するのに約1分かかりました。もちろん、これが発生する速度は、システム内の最も遅いドライブに依存します。私の場合、それは私の電話のSDカードです。ただし、それは既にファイル操作(チェックサムを含む)を行っていた後だったため、多くのファイルが既にRAMキャッシュにコピーされている可能性があります。

3
intuited

また、一般的な-aオプションの使用も避けてください。 FAT32に関する私の推奨事項は

 rsync -vrc --delete --progress --no-p source  destination

--no-p:許可なし

--delete:宛先の一致しないファイルとフォルダーを削除します(本当に必要な場合)

--progress:転送中に進行状況を表示します。大きなファイルに適しています。

1
Ahmad Yoosofan

使用しているフラグ(-vrlptgD)が多すぎます。 rsyncはLinuxユーティリティであり、Fat32およびNTFSでは効果的に機能しないことを忘れないでください。

あなたはそれを使用できるようにトリックを探す必要があります。

試してください:

rsync -rvh --size-only --progress --delete /path/to/ext4/ /path/to/fat32/

詳細 こちら

0
Raman Kathpalia