rsync opção desconhecida da execução do script bash

2

Estou tentando simplesmente sincronizar uma pasta usando o rsync na minha rede local, do meu computador, na minha frente, até o computador de destino.

#!/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"

Para me dar privilégios de escrita

chmod +x nameofscript.sh

Quando eu o executo, ele gera:

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

Como faço para armazenar adequadamente essas opções e executá-las como um script?

    
por Kaiya 22.03.2018 / 22:15

1 resposta

3

Por meio da citação de "$OPTIONS" , o shell está passando para o rsync como uma única string, então o rsync está tentando encontrar uma única opção chamada "--recursive --ignore-existing --progress" , que obviamente não existe, já que essas são três opções separadas. / p>

Isso deve corrigir isso para você:

rsync $OPTIONS "$SRC_DIR" "$DST_DIR"

Uma opção melhor pode ser usar um array bash para armazenar suas opções.

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

A vantagem de usar uma matriz é que você pode introduzir itens que incluem espaços, se for necessário.

    
por 22.03.2018 / 22:18