GNU/Linux >> Znalost Linux >  >> Linux

Rsync Neznámá možnost ze spuštění skriptu Bash?

Snažím se jednoduše synchronizovat složku pomocí rsync přes moji místní síť z mého počítače před sebou do cílového počítače.

#!/bin/bash

echo "This script will sync from my Macbook Dropbox/scripts/ folder to [email protected] @ Norms house"

OPTIONS="--recursive --ignore-existing --progress"
SRC_DIR="~/Dropbox/scripts/"
DST_DIR="[email protected]:~/scripts/"
rsync "$OPTIONS" "$SRC_DIR" "$DST_DIR"

Abych si udělil práva psaní

chmod +x nameofscript.sh

Když to spustím, zobrazí se:

rsync: --recursive --ignore-existing --progress: unknown option

Jak správně uložím tyto možnosti a spustím je jako skript?

Přijatá odpověď:

Citováním "$OPTIONS" , shell to předává rsync jako jeden řetězec, takže rsync se snaží najít jedinou možnost s názvem "--recursive --ignore-existing --progress" , který zjevně neexistuje, protože se jedná o tři samostatné možnosti.

Tohle by vám to mělo opravit:

rsync $OPTIONS "$SRC_DIR" "$DST_DIR"

Lepší možností může být použití pole bash k uložení vašich možností.

OPTIONS=(
    --recursive
    --ignore-existing
    --progress
)
# ...
rsync "${OPTIONS[@]}" "$SRC_DIR" "$DST_DIR"

Výhodou použití pole je, že pak můžete zavádět položky, které obsahují mezery, pokud jsou nějaké nutné.


Linux
  1. Potrubí do/ze schránky ve skriptu Bash

  2. Spusťte bash skript z adresy URL

  3. Bash skript:Použití příkazu script z bash skriptu pro protokolování relace

  1. Otevřete Vim ze skriptu prostředí Bash

  2. Spusťte příkaz bash na jenkins pipeline

  3. rsync/ssh/rsnapshot backup -- vzdálené spuštění skriptu

  1. Zabránění souběžnému spuštění bash skriptu

  2. Bash skript k odstranění nejstaršího souboru ze složky?

  3. Spuštění bash skriptu nebo binárního c na souborovém systému s možností noexec