rsync funktioniert nicht zwischen NTFS / FAT und EXT


13

Ich habe Musik, die ich in meinem Auto von einem FAT32-USB-Stick spiele. Der Ordner, in den ich Songs lege, befindet sich auf meiner EXT4-Festplatte. Ich füge regelmäßig Songs hinzu / entferne sie / retagge sie und möchte gelegentlich rsyncdie Änderungen auf dem USB-Stick. Aber aus einem unbekannten Grund (vielleicht Berechtigungen?) rsyncWerden alle Dateien jedes Mal kopiert und nicht nur geändert. Ich rufe an rsyncwie:

rsync -vrlptgD source dest

Wie kann ich dafür sorgen, dass es so funktioniert, wie ich es möchte (dh ich weiß, wenn eine Datei nicht geändert wurde und kopiere sie nicht)?

Antworten:


17

Javier Riveras Antwort funktioniert, aber es dauert ziemlich lange, bis rsync alle Dateiprüfsummen überprüft und vergleicht. Ich fand, dass die Verwendung der folgenden Option für mich besser funktioniert:

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

Der --modify-window=1Schalter ermöglicht eine Abweichung von ± 1s bei den Zeitstempeln. Wenn diese Option aktiviert ist, ist der Zeitstempelvergleich weniger anstrengend und berücksichtigt die winzigen Zeitunterschiede zwischen NTFS / FAT- und Unix-Dateisystemen.

Quelle: http://www.kai-hildebrandt.de/tutorials/rsync.html

PS: Bitte beachten Sie, dass die Sommerzeit zweimal im Jahr vollständige Dateiübertragungen verursacht. Sehen Sie hier für weitere Details und mögliche Lösungen.


Das ist toll. Ich fand auch die Option --iconvhilfreich, wenn ich vom Quell-Linux zum Dest-MacOS
überging

2
Aus irgendeinem Grund muss ich modify-window=2da =1noch alle Dateien kopieren. Kopieren von NTFS nach FAT32. Danach ist es aber in Ordnung.
Luc

Ich habe die --size-onlyFlagge hinzugefügt , um Dateien zu überspringen, die in der Größe übereinstimmen
alexandre1985

1
@ alexandre1985: Dadurch werden Dateien ausgelassen, die ihren Inhalt, aber nicht ihre Größe ändern. Sie sollten es nur verwenden, wenn Sie nur Dateien sichern möchten, deren Größe sich immer ändert, wenn sich der Inhalt ändert, z. B. weil Daten nur an sie angehängt, aber nie überschrieben werden.
David Foerster

11

Zeitstempel in FAT32 unterscheiden sich zu stark von Unix-Zeitstempeln, um darauf zu vertrauen, dass sie nach Dateiänderungen suchen. Sie sollten auch die Option -c verwenden. Dadurch wird rsync gezwungen, alle Dateien zu vergleichen, um Änderungen zu erkennen, anstatt sich auf Zeitstempel zu verlassen. Es wird funktionieren, aber es ist langsamer.

Schließlich gibt es einige Optionen in Ihrem Befehl, die mit FAT32-Dateisystemen nicht funktionieren.

  • -l behält Links bei, FAT32 kennt keine Links
  • -p wird versuchen, die Berechtigung beizubehalten, erneut keine Berechtigungen für FAT32
  • -t versucht, die Änderungszeitstempel beizubehalten, es gibt nur einen Zeitstempel in FAT32
  • -g wird versuchen, die Gruppeneigenschaft beizubehalten, was von FAT32 ebenfalls nicht unterstützt wird
  • -D wird versuchen, spezielle Dateien und Geräte aufzubewahren, Sie wissen jetzt, was hier kommt.

Wie das Drehmoment kommentiert, werden Sie die ungültigen Optionen nicht verletzen, sie werden einfach nichts tun. Aber Sie müssen -c Schalter hinzufügen.

Dies:

rsync -vrc source dest

sollte funktionieren (zumindest funktioniert es auf meinem Computer).


3

Unter OSX hatte ich ein ähnliches Problem, und die Antwort von Glutanamate half nichts. Einige der Dateien unterscheiden sich um eine Stunde. Das kann daran liegen, dass ich die Zeitzonen relativ oft überschreite. Andere Dateien haben einen Tag oder sogar einen Monat Verspätung. Ich bin mir nicht sicher, warum das so ist. Die Überprüfung einiger Dateien mit sehr unterschiedlichen Zeitstempeln zeigt, dass sie tatsächlich identisch sind.

In jedem Fall sieht es so aus, als würde die --size-onlyOption rsynczum Ignorieren von Zeitstempeln für meine Zwecke funktionieren. -c/ --checksum(wie von Javier erwähnt) funktioniert auch, dauert aber etwas länger. Ich habe es zeitlich festgelegt und es dauerte ungefähr eine Minute, um die Prüfsummen für das GB oder so in dem Unterverzeichnis zu vergleichen, mit dem ich arbeite. Natürlich hängt die Geschwindigkeit, mit der dies geschieht, vom langsamsten Laufwerk im System ab. In meinem Fall ist das die SD-Karte in meinem Telefon. Dies geschah jedoch, nachdem ich bereits einige Dateimanipulationen (einschließlich Prüfsummen) durchgeführt hatte, sodass möglicherweise viele der Dateien bereits in den RAM-Cache kopiert wurden.


1

Sie sollten auch die beliebte Option -a vermeiden. Meine Empfehlung zu FAT32 ist

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

--no-p: keine Erlaubnis

--delete: lösche nicht passende Dateien und Ordner im Ziel (wenn du das wirklich willst)

--progress: Zeigt den Fortschritt während der Übertragung an. Es ist gut für große Dateien.


1
Habe eine Gegenstimme von mir, obwohl -vrcich dies zusätzlich auch tue-vrcz
Antony

0

Das sind zu viele Flags (-vrlptgD), die Sie verwenden. Denken Sie daran, dass rsync ein Linux-Dienstprogramm ist und nicht effektiv mit Fat32 und NTFS funktioniert.

Man müsste nach Tricks suchen, um sie anwenden zu können.

Versuchen:

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

Mehr Infos hier

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.