J'essaie simplement de synchroniser un dossier à l'aide de rsync sur mon réseau local depuis mon ordinateur devant moi vers l'ordinateur de destination.
#!/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"
Pour me donner des privilèges d'écriture
chmod +x nameofscript.sh
Lorsque je l'exécute, il affiche :
rsync: --recursive --ignore-existing --progress: unknown option
Comment stocker correctement ces options et les exécuter en tant que script ?
Réponse acceptée :
En citant "$OPTIONS"
, le shell le transmet à rsync en tant que chaîne unique, donc rsync essaie de trouver une seule option nommée "--recursive --ignore-existing --progress"
, qui n'existe évidemment pas, puisqu'il s'agit de trois options distinctes.
Cela devrait résoudre le problème :
rsync $OPTIONS "$SRC_DIR" "$DST_DIR"
Une meilleure option pourrait être d'utiliser un tableau bash pour stocker vos options.
OPTIONS=(
--recursive
--ignore-existing
--progress
)
# ...
rsync "${OPTIONS[@]}" "$SRC_DIR" "$DST_DIR"
L'avantage d'utiliser un tableau est que vous pouvez alors introduire des éléments qui incluent des espaces, le cas échéant.