GNU/Linux >> Tutoriels Linux >  >> Linux

Option Rsync inconnue à partir de l'exécution du script Bash ?

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.


Linux
  1. Exécuter le script bash à partir de l'URL

  2. fichier de création atomique s'il n'existe pas à partir du script bash

  3. Appelez le script Python à partir de bash avec un argument

  4. Exécutez la commande bash sur le pipeline jenkins

  5. sauvegarde rsync/ssh/rsnapshot -- exécution de script à distance

35 exemples de scripts bash

Comment exécuter un script bash

Script Bash vers Center Fortune/texte depuis Stdin/pipe ?

Existe-t-il un moyen d'afficher la notification du script bash dans Ubuntu ?

Script bash pour supprimer le fichier le plus ancien d'un dossier

Exécution d'un script bash ou d'un binaire c sur un système de fichiers avec l'option noexec