POSIX-Dateinamen können alle Zeichen außer enthalten /
, aber einige Dateisysteme reservieren Zeichen wie ?<>\\:*|"
. Mit pax
kann ich Dateien kopieren, während ich diese reservierten Zeichen ersetze:
$ pax -rw -s '/[?<>\\:*|\"]/_/gp' /source /target
Es pax
fehlt jedoch eine --delete
Option wie rsync
und rsync
kann keine Zeichen ersetzen. Ich suche nach einer einfachen Möglichkeit, meine Musiksammlung regelmäßig auf einer externen Festplatte zu sichern.
file-copy
synchronization
vfat
Frank
quelle
quelle
--modify-window
Option fürrsync
. Die Zeichensubstitution wird jedoch nicht gelöst.+
und;
sollte möglicherweise da drin sein. Der einzige Weg, um sicher zu sein, ist zu testen ...Antworten:
Sie können eine Ansicht des FAT-Dateisystems mit POSIX-Semantik erstellen, einschließlich unterstützender Dateinamen mit einem anderen Zeichen als
/
oder einem Null-Byte. POSIXovl ist hierfür ein relativ neues FUSE- Dateisystem.Zeichen in Dateinamen , dass VFAT nicht akzeptiert codiert sind , als
%(XX)
woXX
sind hexadezimale Ziffern. Beachten Sie ab POSIXovl 1.2.20120215, dass ein Dateiname wie dieser%(3A)
als solcher selbst codiert und als solcher dekodiert wird. Daher:
besteht Kollisionsgefahr, wenn Dateinamen Teilzeichenfolgen des Formulars enthalten%(XX)
.Beachten Sie, dass POSIXovl nicht mit zu langen Dateinamen zurechtkommt. Wenn der codierte Name nicht in 255 Zeichen passt, kann die Datei nicht gespeichert werden.
POSIXovl speichert Unix-Berechtigungen und Eigentumsrechte in aufgerufenen Dateien
.pxovl.FILENAME
.quelle
fuse-posixovl
) und funktioniert wie ein Zauber.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:
locate
wäre schneller alsfind
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):
Ich würde empfehlen, dies
rename -n
zuerst zu versuchen, falls etwas schief geht.quelle