Ich war neugierig darauf und habe ein bisschen gegraben.
Es gibt ein paar Patches, die es nie in rsync geschafft haben, wenn Sie Lust haben, aus dem Quellcode zu kompilieren. Obwohl beide alt sind, funktionieren sie möglicherweise noch nicht. Dieser fügt speziell eine --fat-filenames
Option hinzu und dieser für eine --tr
Option .
Diese Fragen betreffen auch etwas Ähnliches - Rsyncing-Dateien mit Sonderzeichen wie USB FAT32 und /ubuntu/11634/how-can-i-substitute-colons-when-i-rsync-on-a-usb- Schlüssel . Die beste Wette ist wahrscheinlich rdiff-backup, das die Substitution durchführt, aber ich sehe keine Optionen, um die Kontrolle darüber zu haben. Es gibt aber auch einige andere gute Ideen.
Eine grobe Idee für ein Skript, das die Dateien jedes Mal löscht und neu erstellt, wenn nicht zu viele vorhanden sind, wäre etwa:
[sudo] updatedb # doing this as root will update the system database
locate -r '^/full/path/to/source/.*[?<>\\:*|\"]' |
sed 's\^/full/path/to/source/\\' >bad_names
rsync --delete --exclude-from=bad_names -av source/ target
cd source
<bad_names pax -rw -s '/[?<>\\:*|\"]/_/gp' target
locate
wäre schneller als find
wenn die Datenbank einigermaßen aktuell wäre.
Schließlich können Sie dies einfach tun, damit die Dateien keine Probleme mehr verursachen (zumindest die derzeit vorhandenen):
find source/ -regex '[?<>\\:*|\"]' -exec rename 's/'[?<>\\:*|\"]'/_/g' {} +
Ich würde empfehlen, dies rename -n
zuerst zu versuchen, falls etwas schief geht.