Ich mag Ihr Skript, aber bei Bedarf können Sie es per Befehlszeile direkt aus dem aktuellen Verzeichnis ausführen:
rsync -a "$PWD" ~/backup/
oder ähnlich wie bei Ihrem Skriptansatz mit
rsync -a "$(pwd -P)" ~/backup/
Hinweise:
-
Es ist erforderlich, das aktuelle Verzeichnis in Anführungszeichen zu setzen, wenn im Pfad beispielsweise ein oder mehrere Leerzeichen vorhanden sind.
-
Bei symbolischen Links im Pfad ist es möglich, den physischen zu erhalten Pfad unter Vermeidung aller symlinks Angabe der Option
-P
impwd
Befehlsaufruf ($(pwd -P)
) oder Aufrufen der ausführbaren Datei mit ihrem vollständigen Pfad ($(/bin/pwd)
).
Tatsächlich gibt es das eingebautepwd
das standardmäßig den symlinked anzeigt Pfad und die ausführbare Datei/bin/pwd
die standardmäßig die physische zeigt Weg. -
Beide Befehle beziehen sich auf die Variable
$PWD
die das aktuelle Arbeitsverzeichnis enthält wenn sie nach der Version des Pfades mit eventuellen symlinks gefragt werden :also wenn Sie das physische nicht unbedingt brauchen path, können Sie vermeiden, die Subshell aufzurufen und verwenden Sie direkt die Variable$PWD
.rsync -a "$PWD" ~/backup/
Lösung gefunden:
Erstellt ein neues Shell-Skript wie dieses:
current_dir=`pwd`
dir_name=`basename $current_dir`
rsync -a . ~/backup/$dir_name
und wenn dies ausgeführt wird, wird ein neues Verzeichnis am Ziel erstellt und der Inhalt des aktuellen Ordners kopiert.