Ist es möglich, zunurrsync die Dateinamen? Ich habe eine Speicherbox und möchte die Dateinamen (und ihre Pfade) einer anderen Box hinzufügen. Ich erstelle derzeit jede Datei mit touch
(sie werden mit einer Größe von 0 Byte erstellt). Es dauert zu lange und ich frage mich, ob dies mit automatisiert werden könnte rsync
.
Wenn nicht, gibt es ein anderes Tool, das dies ermöglicht? Oder müsste ich etwas Eigenes programmieren?
Antwort1
Wenn Ihr Ziel darin besteht, leere Dateien zu erstellen, kann eine Vorlage wie folgt erstellt werden:
#!/bin/bash
FILES=$1 # original structure
TMPL=$2 # where to create empty files
[[ -d $FILES ]] || exit 1
[[ -d $TMPL ]] || mkdir -p $TMPL || exit 1
cd $TMPL
find "$FILES" -type d -printf "$TMPL%p\0" | sort -z |xargs -0 -L 1000 mkdir -p
find "$FILES" -type f -printf "$TMPL%p\0" | xargs -0 -L 1000 touch
Dadurch wird das Verzeichnis aller Dateien aus dem ursprünglichen Baum erstellt und die Dateien in den unter TMPL erstellten Ordnern werden berührt.
Nachdem Sie einen „gespiegelten“ Ordner mit ausschließlich leeren Dateien erstellt haben, können Sie ihn wie jeden anderen Ordner per rsync mit jedem Host verbinden:
rsync -av -e 'ssh -p 22 -l username' \
/template/structure remotehost:/backup/templates/
Die Option -e ist optional, wenn der Benutzername auf beiden Hosts derselbe ist und SSHD auf dem Standardport läuft. Achten Sie darauf, was passiert, wenn Sie einen abschließenden Schrägstrich auf beiden oder einem der Teile „von“ und „bis“ angeben. Das ist wichtig. Der Parameter „remotehost“ kann eine IP-Adresse statt eines Alias sein.
Antwort2
rsync
selbst scheint keine Option zum Erstellen von Dateien zu haben. Sie können jedoch verschiedene Möglichkeiten ausprobieren, anstatt Touch manuell zu verwenden:
- rsync den Verzeichnisbaum, dann führen Sie es
find
auf der Wurzel dieses Baums undecho "" >
in jede Datei aus - Verwenden Sie es
find
, um eine Liste von Verzeichnisbäumen abzurufen, verwenden Sie es dannmkdir -p
für jedes Element dieser Liste (möglicherweise mit vorheriger umgekehrter Sortierung, um die Anzahl der Systemaufrufe zu minimieren) und verwenden Sie es danntouch
für eine ähnlich erstellte Liste von Dateien.
Ich würde jedoch die erste Option wählen, wenn der Speicherplatz verfügbar ist, da hier die Berechtigungen und Zugriffsrechte erhalten bleiben (bei entsprechenden Argumenten für rsync
).