rsync Verhalten nach geänderten Zugriffsrechten

4

404

Aktives Mitglied
Thread Starter
Dabei seit
20.02.2015
Beiträge
241
Reaktionspunkte
10
Hallo.

Wenn ich bei Dateien die Zugriffsrechte (z.B. auf 644) ändere oder mit chmod -x das executable bit entferne,
ansonsten am Inhalt aber nichts ändere,

kopiert rsync dann die komplette Datei oder kann es Zugriffsrechte am Ziel einfach updaten (was ja viel schneller wäre)? Es handelt sich um ein lokales Backup auf eine direkt angeschlossene HDD.
 
Zuletzt bearbeitet:
Wenn du eine Datei auf 644 setzt entfernst du doch bereits das X-Bit. Wofür du nach dem 644 noch ein -x durchführst ist mir schleierhaft :noplan:
Wie dem auch sei: aktuelle Versionen von rsync übertragen die Datei nicht neu, zumindest nicht wenn man auf dem lokalen Dateisystem verbleibt.

iMac:test martin$ ls -lha file
-rwxr-xr-x 1 martin staff 0B Sep 10 12:16 file
iMac:test martin$ rsync -avP file /tmp
building file list ...
1 file to consider
file
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/1)

sent 118 bytes received 42 bytes 320.00 bytes/sec
total size is 0 speedup is 0.00

iMac:test martin$ ls -lha /tmp/file
-rwxr-xr-x 1 martin staff 0B Sep 10 12:16 /tmp/file

iMac:test martin$ chmod -x file
iMac:test martin$ rsync -avP file /tmp
building file list ...
1 file to consider

sent 82 bytes received 26 bytes 216.00 bytes/sec
total size is 0 speedup is 0.00

iMac:test martin$ ls -lha /tmp/file
-rw-r--r-- 1 martin staff 0B Sep 10 12:16 /tmp/file

Wie sich das bei externen Festplatten oder Netzlaufwerken verhält kann ich grad nicht sagen, dürfte aber nicht wesentlich anders sein.
 
zugriffsrechte sind ja metadaten, die datei muss also nicht neu übertragen werden.
 
  • Gefällt mir
Reaktionen: 404
Welche Methode ist eigentlich die schnellste und die am wenigsten fehleranfällige (wegen Leer- & Sonderzeichen in Dateinamen und sehr langen Dateipfaden), um sehr sehr viele Dateien auf 644 zu ändern?

Code:
find . -type f -not -perm 644 -exec chmod 644 {} \;
oder
Code:
find . -type f -not -perm 644 -print0 | xargs -0 -I {} chmod 644 {}
oder noch eine andere?

[EDIT] Habs nach einigen Versuchen selbst herausgefunden, mehr oder weniger: Mit xargs gehts anscheinend schneller, aber Dateien mit sehr langen Pfaden oder evtl. Sonderzeichen machten manchmal Probleme und wurden nicht geändert. Für die hab ich dann die exec Version genommen.
 
Zuletzt bearbeitet:
xargs ohne -n1 ist i.d.R. am schnellsten.
bei xargs -0 gilt, beide oder keiner. du musst also vorne find -print0 benutzen. * hast du ja editiert.
annähernd wie xargs, verhält sich find mit "... {} \+", statt "... {} \;".

welche der möglichkeiten zum einsatz kommt, bestimmt die relevanz des exit-status, das fehlerverhalten oder die parallelisierbarkeit einer der beiden beteiligten.
 
Zurück
Oben Unten