Script Shell

Sauvegarde sur un support distant

Backup en réseau avec AFP, FTP, SMB
Première publication : .
Mise en ligne: 13 septembre 2004.
Modifié le : 13 décembre 2004.
Par Captain_X
Sauvegarde sur un support distant, Terminal, , FTP, , Shell, , Script, , Crontab, , AFP, , SMB, , Sauvegarde

Lors du précédent article nous avons vu comment créer une sauvegarde automatique avec un script shell et la crontab. Maintenant nous allons étudier comment enregistrer cette sauvegarde sur serveur distant en utilisant 3 méthodes : AFP, SMB et FTP.

Sauvegarde sur réseau local via AFP

AFP : Apple File Protocol, est le système de gestion du réseau propre au Mac. Lorsque dans un réseau local nous connectons nos macs entre eux, c’est à ce protocol que nous faisons appel.

Pour écrire le script vous pouvez utiliser n’importe quel éditeur de texte qui est capable d’enregistrer au format brut .txt (par pitié tout sauf word). TextEdit est parfait pour celà.

Déclarer nos variables :

Pour se connecter sur un poste par AFP, nous avons besoins de 4 variables :

-  le nom qui est utilisé pour la connexion

-  le mot de passe utilisé pour la connexion

-  le nom ou l’ip du Mac sur lequel on désire se connecter

-  le nom de l’utilisateur ou du volumes du Mac distant sur lequel on veut se connecter.

En effet lorsque vous vous connecter par le finder sur un mac distant, si il y a plusieurs utilisateurs, il va vous lister les utilisateurs ainsi que les volumes (si il y’a plusieurs disques durs) et vous demandez de choisir. il nous faut donc renseigner cette variable pour que le script fonctionne correctement.

De plus il nous faut décrire impérativement 2 variables qui sont :

-  le dossier source : c’est le dossier que l’on désire archiver

-  le dossier cible : c’est le dossier ou l’on désire stocké l’archive.

Donc comme entête de script nous avons :

Puis pour notre archive.

Pour archiver convenablement nous allons donner un nom à l’archive qui comportera le nom du dossier archiver et la date d’archivage. pour celà nous allons créer 2 nouvelles variables :

Nous allons donc avoir une archive qui sera nommé sous la forme : archive_de_Moi_du_30-08.

Connexions AFP au serveur :

Pour se connecter au server AFP il faut utliser la commande open et pour se déconnecter la commande umount

Création de l’archive :

Pour archiver nous allons utiliser la commande tar couplé à la compression gzip. Ainsi nous obtiendrons une archive compressée de tout nos documents. La commande s’écrit sous la forme suivante : tar -zcvf fichier.tgz fichier_source

Ce qui dans notre cas donne :

tar -zcvf "${cible}"/archive_de_"${nom_archive}"_du_"${jour}".tgz "${source}"

Nous obtenons donc comme script :

Voilà, ca marche tout seul. N’oubliez pas tout de même de graver vos archives sur Cd ou DVD

Sauvegarde via internet : FTP

Pour ce qui est de la sauvegarde sur serveur distant via FTP, la méthode est un peu différente, même si au bout du compte les variables et la compression sont les mêmes, à savoir :

-  nom du serveur

-  log utilisateur

-  pass utilisateur

-  dossier source à archiver

-  Dossier cible contenant l’archive.

-  La date et le nom du dossier source pour nommer notre archive.

Mais contrairement à la sauvegarde via AFP, il nous faut procéder en 2 temps. Premièrement, nous devons créer notre archive, et dans un second temps la transférer sur le serveur FTP. Pour cela nous allons faire transiter l’archive par un dossier temporaire.

Création de l’archive

De la même façon que pour AFP nous allons utilisé tar et gzip.

tar -zcvf "${archive}" "${source}"

Transfert via FTP

Il nous faut récupérer le nom de l’archive pour pouvoir l’utiliser lors du transfert FTP :

doc_dest=$(basename "${archive}")

Maintenant que nous avons créé l’archive, que nous avons son nom d’arrivé il nous faut ouvrir une session FTP.

Attention à ne pas transferer de trop gros archives via FTP. Sinon le temps de transfert risque d’être extremement long, et votre serveur n’est pas extensible (surtout si c’est un ftp perso).

Sauvegarde sur réseau local via SMB

La connexion sur un serveur microsoft ou Linux via SMB est un peu différente car samba utilise les mêmes commandes que FTP, mais on ne peut concatainer, ces commandes. Il faut donc les taper au kilomètre en les séparant d’un ’ ;’.

Contrairement aux 2 méthodes précédentes, on peut sécuriser nos noms et mot de passe en les écrivants dans un fichier que nous pouvons cacher et protéger en lecture.

1 - la méthode simple : le mot de passe est dans le script

Comme pour nos autres scripts nous allons déclarer nos variables :

Le nom du serveur (ici monpc) ne correspond pas nécessairement au nom IP de la machine, mais au nom NETBIOS

Comme pour la sauvegarde par FTP, nous allons d’abord faire une archive dans notre dossier temporaire /tmp/

Puis on lance la connexion, et la copie sur le serveur avec la commande smbclient

l’option -U nous permet d’insérer notre login/password, l’option -D nous permet de nous placer directement dans le dossier cible et l’option -c permet de lancer la copie, grace à la commande put.

Tout doit être écrit sur une seule ligne, c’est du PC donc trés capricieux et limite pénible.

De plus dans les exemples ci-dessus (AFP & FTP) nous pouvions nommer notre archive en utilisant des variables (le jour, le nom du dossier ....) ici la commande put ne supporte aucune variable, donc soyez suffisament clair dans le nom que vous attribuerez à l’archive (ici sauvegarde.tgz).

2 - la méthode "sécurisée" : le mot de passe est dans un fichier

Tout d’abord créer un dossier caché à la racine de votre home. Pour celà, ouvrez un shell et tapez : % mkdir .smb_conf

Puis en sécuriser l’accès :

% chmod 700 .smb_conf

Puis ouvrez textedit et saissisez les lignes :

sauvegardez le au format .txt (et non RTF) sous le nom log.txt

Nous allons le protéger en lecture/ecriture :

% chmod 700 log.txt

(utilisez le glisser/déposer de l’icône dans la fenêtre terminal).

Ainsi vous seul avez accès à ce dossier et à ce document.

Les variables sont les mêmes, et nous allons rajouter celle qui va indiquer le chemin vers le fichier log.txt

Utiliser toujours la même méthode d’archivage que précédemment à savoir :

Nous allons maintenant nous connecter non plus avec l’option -U, mais avec l’option -A :

En fin de script ne pas oublier de supprimer l’archive :

rm /tmp/*.tgz

Voilà, et zou dans la crontab et vous voilà avec de quoi sauvegarder dans toute les conditions :D plus d’excuse.

Captain_X

 

Pour chaque script n’oubliez pas de le rendre executable et de le tester avant de le mettre dans votre crontab :
-  Ouvrez un nouveau shell, puis ’chmod +x mon_script.sh’. (glisser/déposer l’icône de votre script dans la fenêtre terminal)

-  taper ’./mon_script.sh’ pour l’exécuter. (attention de bien être dans le dossier dans lequel vous avez placer votre script)

-  ou bien taper : ’sh mon_script.sh’ (vous pouvez alors utiliser le glisser/déposer).

N’oubliez pas que de toute façon vos identifiants circulent en claire sur le réseau.

Envoyer
L'e-mail du destinataire :

Votre Nom :

Votre e-mail :


 |  Imprimer |  Réagir
Auteur : Captain_X
Bio : Il est né le divin enfant .... Et ca fait un moment !
Captain_X
Sauvegarde sur un support distant
Par bikoz le 13 janvier 2008 - Menu du forum
 

Bonjour,

J’ai cherché comment on pourrait passer une variabe à la commande smbclient suivante :

smbclient //"$serveur"/"$partage" -A "$log" -D "$cible" -c ’put /tmp/sauvegarde.tgz sauvegarde.tgz

Voici comment faire (en deux lignes) :

CMD="smbclient //$serveur/$partage -A $log -D $cible -c ’put /tmp/$fichier $fichier"

eval $CMD

PS : l’article est super intéressant :-)

 
Sauvegarde sur un support distant
Par Tazer le 9 février 2009 - Menu du forum
 
Bonjour, Bikoz, pourrait tu donner un peut plus d’information concernant ta "trouvaille". Ta commande me serait très pratique mais je n’arrive pas à l’utiliser. Le "CMD" et le "eval" sont-ils nécessaires ? Pourrait tu me communiquer la syntaxe exacte de "$fichier" ? PS : Je suis nouveau dans le script shell. A bientôt
 
Sauvegarde sur un support distant
Par xanthos le 3 juin 2009 - Menu du forum
 

Bonjour, pour passer une option dans la partie du put, on doit pouvoir utiliser des guillemets (au lieu de quotes simples) :

smbclient //"$serveur"/"$partage" -A "$log" -D "$cible" -c "put /tmp/sauvegarde.tgz sauvegarde.tgz"

Merci pour l’article.

 
Sauvegarde sur un support distant
Par xanthos le 3 juin 2009 - Menu du forum
 

Bonjour, on doit pouvoir passer des variables à la dernière partie en utilisant des guillemets autour du put : smbclient //"$serveur"/"$partage" -A "$log" -D "$cible" -c " put /tmp/sauvegarde.tgz sauvegarde.tgz "

Merci pour cet article.

 
Sauvegarde sur un support distant
Par benlebowski le 29 juillet 2007 - Menu du forum
 

Encore un tres bon article Captain_X ! mais que je decouvre un peu tardivement. ;) merci :)

Par contre, concernant la sauvegarde via AFP, je me suis fait avoir sur le nom du volume car mon mac et le mac distant avait le meme nom (Macintosh HD). Du coup, le nom du volume monté (qd on le fait manuellement) est Macintosh HD-1. J’ai changé mon nom de volume pour plus de carté :)

En plus, pour symboliser l’espace via AFP, il faut faire un "%20" sans les guillements et non un "\ " comme sous unix.

Cela peut peut etre donne des solutions a un utilsateur moins habitue a ce genre de problemes ;)

 
commentaires ftp + sauvegarde via ssh
Par bLb le 14 décembre 2005 - Menu du forum
 
Excellent ! Juste un petit bémol, les commentaires dans les commandes ftp (après <<FIN_FTP) sont considérés par le shell comme "invalid command" et je n’ai pas trouvé comment commenter une ligne ftp.
Quoi qu’il en soit, merci pour tous vos tutos :-) et si l’envie vous prends d’en faire un sur un script shell permettant de contrôler un serveur distant via ssh, je serais preneur, car pour l’instant je comprends rien aux histoires d’enregistrement de clefs cryptés et tout le toutim :(
 
commentaires ftp + sauvegarde via ssh
 le 15 décembre 2005 - Menu du forum
 
pour mettre une ligne en commentaire il faut mettre un # au debut... En FTP, les # ne sont peut être pas interprété comme des commentaires. il suffit de les supprimer dans ton script. Pour éviter les messages d’erreurs
 
Copyright 2002-2017 xrings - Tous droits réservés - Mentions légales - Propulsé par SPIP - Webdesigner et référencement Frédéric Guerrier