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


13

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

rsync -vrlptgD source dest

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

回答:


17

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

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


これは素晴らしい。私はオプションも見つけ--iconvDESTのMacOSにソースのLinuxから行くときに便利
WIM

2
何らかの理由でmodify-window=2=1まだすべてのファイルをコピーするため、使用する必要があります。NTFSからFAT32へのコピー。その後は大丈夫です。
リュック

私が追加--size-onlyその試合のサイズのファイルをスキップするためのフラグ
alexandre1985

1
@ alexandre1985:コンテンツを変更するがサイズは変更しないファイルは省略されます。コンテンツを変更するときに常にサイズが変更されるファイルのみをバックアップする場合にのみ使用してください。たとえば、データはファイルに追加されるだけで上書きされないためです。
デビッドフォースター

11

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

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

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

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

この:

rsync -vrc source dest

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


3

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

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


1

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

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

--no-p:許可なし

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

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


1
に加えて-vrc、私からも賛成票を持っています-vrcz
アントニー

0

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

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

試してください:

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

詳細はこちら

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.