Créer un script avec une commande SSH à l'intérieur.

spinoops

Membre confirmé
9 Janvier 2007
19
0
37
Bonjour,

J'ai besoin de créer un script qui fasse en gros :

1) connexion au serveur en ssh. J'ai évidemment généré et transféré la clé publique sur le serveur pour éviter d'avoir à entrer un mot de passe.

Bloc de code:

2) Copier un dossier sur ce serveur tout en gardant les droits (le plus important).

Bloc de code:
cp -Ra /Volumes/HD/mondossier/ /Volumes/HD/monnouveaudossier/

3) Pouvoir exécuter ces deux commandes directement dans un seul script. Comprenez qu'il faut absolument que les droits soient gardés depuis "mondossier" vers "monnouveaudossier", c'est le plus important.

C'est donc la commande SSH qui me bloque dans mon script pour le moment. Je n'arrive pas à l'intégrer correctement.

De plus, j'ai essayé une autre solution qui est un scp du serveur vers lui même.

Bloc de code:
scp -rE [email protected]:/Volumes/HD/mondossier/ [email protected]:/Volumes/HD/monnouveaudossier/

Notez bien l'option -E qui permet de garder les droits mais qui ne fonctionne pas. Le dossier se copie donc, mais sans les droits.

Dernière solution, j'ai pensé à rsync :

Bloc de code:
rsync -rp [email protected]:/Volumes/HD/mondossier/ [email protected]:/Volumes/HD/monnouveaudossier/

Mais il m'indique que "The source and destination cannot both be remote.".

Je n'arrive donc pas à effectuer ces deux commandes dans un seul script ou dans une seule commande. Pouvez-vous m'éclairer?

Merci d'avance,

@ bientôt
 
Merci pour la réponse.

Malheureusement, même avec l'option -p, les droits ne sont pas gardés lors de la copie. Plus particulièrement les ACLs, c'est ça qui m'intéresse en fait.

Pour l'option -E, je pense que c'est seulement sur Mac car le man me donne :

-E Preserves extended attributes, resource forks, and ACLs. Requires
both ends to be running Mac OS X 10.4 or later.
 
Quel est le système cible, donc ?
 
Bon en fait, c'est tout con. Il suffit de lancer la commande comme ceci :

Bloc de code:
ssh [email protected] "cp -Ra /Volumes/HD/mondossier/ /Volumes/HD/monnouveaudossier/"

Juste le cp entre guillemets.
 
Dernière édition: