ich bin gerade dabei ein Synchronisationsscript zu schreiben. Es soll einen lokalen Ordner mit einem remote Ordner über ssh abgleichen.
Der Original Ordner hat momentan ca. 730GB, in Zukunft wird dieser aber noch wachsen. Da auch mein lokaler Ordner über cifs gemountet ist, prüfe ich immer zuerst ob bestimmte Dateitypen drin sind, wenn sie das sind, wird ein "--delete" an den rsync Befehl angehängt.
Zusätzlich lasse ich nur gegen die Dateigröße prüfen, nicht Veränderungsdatum etc.
Jetzt ist mir beim testen allerdings aufgefallen, dass rsync anscheint alle Dateien die Umlaute enthalten gelöscht hat, und diese wieder neu hochläd. Mir ist vorher schon mal aufgefallen, dass python bei der Ausgabe gemeckert hat, dass es manche Zeichen nicht decodieren kann. Leider habe ich das ignoriert, bzw. beim line.decode einfach ein errors="ignore") angehängt... War nicht so klug .
Kennt ihr dieses Phänomen und wisst ihr woran das liegt, bzw. wie ich das in den Griff bekomme?
Hier ein Code-Auszug:
Code: Alles auswählen
#!/usr/bin/env python3
# -*- coding: utf-8 -*- # <--- kann das ein Problem sein?
# sync local <> remote clips
def transfer_clips():
print('Sync clips...')
extra = rsync_delete()
cmd = [
RSYNC_BIN, '-re', 'ssh -i ' + SSH_KEY, '--size-only',
extra, TRANSFER_CLIPS_ROOT,
'user@example.org:streamer/clips/']
run = Popen(
cmd, stdout=PIPE, stderr=STDOUT)
for line in run.stdout:
print(line.decode('utf-8', errors="ignore"))