rsync mit Doppelpunkten in Dateinamen

rsync mit Doppelpunkten in Dateinamen

Ich habe ein ziemlich großes Verzeichnis, das ich aus Sicherungs- und Portabilitätsgründen mit einer externen Festplatte synchronisieren muss.

/work

Ich versuche, den folgenden rsync-Befehl auszuführen, um diesen Ordner auf meine externe Festplatte zu kopieren:

rsync -avz /work /media/extern_drive --max-size '4G'

Das scheint gut zu funktionieren, AUSSER dass keine Dateien kopiert werden, die ein :enthalten.

Dieser Beitrag bietet eine Lösung für eine einzelne Datei: rsync: Doppelpunkt in Dateinamen, aber das Problem ist, dass ich so viele dieser Dateien in verschiedenen Verzeichnissen verstreut habe, dass ich es nicht manuell tun kann.

Gibt es eine Möglichkeit, alle Dateien mit einem Doppelpunkt im Dateinamen rekursiv mit rsync zu synchronisieren?

Antwort1

Ich vermute, dass Ihr externes Laufwerk ein Dateisystem wie VFAT verwendet, das keine Doppelpunkte in Dateinamen zulässt.

Eine einfache Möglichkeit wäre, Ihre Dateien als Archive zu sichern ( zip, 7z, tar.xz, was immer Ihnen einfällt). Auf diese Weise wären Sie durch keine Eigenschaft des Dateisystems außer der maximalen Dateigröße eingeschränkt.

Eine weitere Möglichkeit wäre die VerwendungRdiff-Sicherung, das sich um die Übersetzung von Dateinamen kümmert, die nicht auf das Zieldateisystem passen, sowieempfohlenvonPoolie.

Ein allgemeiner Ansatz für nicht unterstützte Zeichen ist die Nutzung der Dateisystemebene zur Transformation der Dateinamen. DieSICHERUNGDateisystemAbonnierenwandelt Dateinamen in Namen um, die von Windows VFAT unterstützt werden.

mkdir ~/mnt
mount.posixovl -S /media/extern_drive ~/mnt
rsync -a /work ~/mnt
fusermount -u ~/mnt

SehenWie kann ich Doppelpunkte ersetzen, wenn ich rsync auf einem USB-Stick ausführe?für weitere Einzelheiten und prüfen Sie den Thread auf eventuelle neue Lösungen.

Antwort2

Ich würde versuchen, das Muster von Dateien mit Doppelpunkten im Namen explizit einzuschließen, und zwar wie folgt:

$ rsync -avz --include '*:*' /work /media/extern_drive --max-size '4G'

Beispiele

$ mkdir 1 2
$ touch 1/file{1..5}
$ touch 1/file:{1..5}
Der explizite Ausschluss
$ rsync -avz --exclude '*:*' 1/ 2/
sending incremental file list
./
file1
file2
file3
file4
file5

sent 313 bytes  received 114 bytes  854.00 bytes/sec
total size is 0  speedup is 0.00
Ihre explizite Einbeziehung
$ rm -fr 2/*

$ rsync -avz --include '*:*' 1/ 2/
sending incremental file list
./
file1
file2
file3
file4
file5
file:1
file:2
file:3
file:4
file:5

sent 573 bytes  received 209 bytes  1,564.00 bytes/sec
total size is 0  speedup is 0.00

verwandte Informationen