rsync nur Dateinamen

rsync nur Dateinamen

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

rsyncselbst 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 findauf der Wurzel dieses Baums und echo "" >in jede Datei aus
  • Verwenden Sie es find, um eine Liste von Verzeichnisbäumen abzurufen, verwenden Sie es dann mkdir -pfür jedes Element dieser Liste (möglicherweise mit vorheriger umgekehrter Sortierung, um die Anzahl der Systemaufrufe zu minimieren) und verwenden Sie es dann touchfü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).

verwandte Informationen