Líbí se mi váš skript, ale v případě potřeby jej můžete provést pomocí příkazového řádku přímo z aktuálního adresáře:
rsync -a "$PWD" ~/backup/
nebo podobným způsobem jako váš skriptový přístup s
rsync -a "$(pwd -P)" ~/backup/
Poznámky:
-
Je potřeba uvést aktuální adresář, pokud je v cestě například jedna nebo více mezer.
-
V případě symbolických odkazů v cestě je možné získat fyzické cestu vyhýbá se všem symlinkům zadáním volby
-P
vpwd
vyvolání příkazu ($(pwd -P)
), nebo volání spustitelného souboru s jeho úplnou cestou ($(/bin/pwd)
).
Ve skutečnosti existuje vestavěnýpwd
která ve výchozím nastavení zobrazuje symbolické odkazy cestu a spustitelný soubor/bin/pwd
která ve výchozím nastavení zobrazuje fyzické cesta. -
Oba příkazy odkazují na proměnnou
$PWD
který obsahuje aktuální pracovní adresář když jsou požádáni o verzi cesty s případnými symlinky :pokud tedy nutně nepotřebujete fyzické cestu, můžete se vyhnout volání subshell a použijte přímo proměnnou$PWD
.rsync -a "$PWD" ~/backup/
Nalezeno řešení:
Vytvořil nový skript shellu, jako je tento:
current_dir=`pwd`
dir_name=`basename $current_dir`
rsync -a . ~/backup/$dir_name
a když to provedete, vytvoří se nový adresář v cíli a zkopíruje se obsah aktuální složky.