Suite à certains changements, l'utilisation de cygwin sur une machine windows est devenue délicate. Le principal changement ici est donc l'utilisation de virtualbox sur la machine windows, pour virtualiser un système linux debian. Des aménagements sont cependant nécessaires pour garder l'automatisation complète du système. Cependant le système de sauvegarde (ssh, scp, cygwin) est conservé. Dupdup.eu vous présente donc la version 2 de sa sauvegarde windows-linux.

 

I Installation de Debian sur machine virtuelle, sur le poste distant

II Configuration de ssh

III Scripts de sauvegarde

IV Automatisation

 


I Installation de Debian sur machine virtuelle, sur le poste distant

I-1) Virtualbox, debian

Télécharger virtualbox, et l'installer sur l'hote windows. Installer ensuite une version de debian (je conseille la version stable, mais dans tous les cas, cette machine sera globalement "peu" utilisée, dans le sens où seuls ssh, scp et rsync sont utiles). Une taille de partition de 8 à 10 Go sera largement suffisante.

Configurez le réseau afin qu'il soit facilement configurable et fonctionnel: Le mode NAT semble un bon choix, il s'agit de faire comme si la machine virtuelle avait une carte réseau connectée indépendamment.

I-2) Additions client, dossiers partagés

Utiliser la fonction dossiers partagés: il faut dès l'installation de la machine virtuelle terminée, installer les additions virtualbox, en root. En général on installe d'abord certains compléments au noyau, cette étape peut être facultative:

debianhote:~# apt-get install linux-headers-`uname -r` build-essential

Puis alors, dans la barre, choisir périphériques puis installer les additions client, et lancez sur la machine virtuelle, le script correspondant, après avoir monté l'équivalent d'un lecteur cdrom:

debianhote:~# mount /media cdrom0

debianhote:~# cd cdrom

debianhote:~# sh VBoxLinuxAddition-x86.run

(Il est possible d'utiliser la touche TAB pour choisir le bon script plus rapidement)

La machine virtuelle éteinte, choisissez le ou les dossiers partagés à inclure, ce sont dans ces dossiers que devront se trouver les fichiers à envoyer. Ils seront ensuite accessibles, et à monter en utilisant:

debianhote:~# mount -t vboxsf nomdupartage cheminmontage

Cette étape peut être facultative, il semble que sur certaines versions le montage du dossier partagé se fasse automatique dans /media/sf_nompartage. Pour vérifier, faites un ls.

debianhote:~# ls /media/nompartage

Et vérifiez les permissions sur ce dossier, en revenant sur l'utilisateur local, et non plus en root, puisque nos scripts s’exécuteront via cet utilisateur.

Note: prenez garde dans le cas du partage d'une partition complète, rsync n'aime pas beaucoup les fichiers système cachés crées par windows se trouvant à la racine. Mieux vaut partager un dossier, ou du moins ne lancer rsync que sur un dossier et pas sur une racine de disque.

Désormais, tout se passe sur la machine virtuelle et votre serveur: vos fichiers windows à envoyer sont alors accessibles directement sur la machine virtuelle.

I-3) Autres outils

Installez tant qu'à faire les outils qui nous seront utiles, en root:

debianhote:~# apt-get install ssh rsync

 


II Configuration de ssh

Cette partie reste inchangée. Placez vous sur le compte utilisateur (non root)

II-1) Génération des clés

Par défaut, il faut créer dans le /home de l'utilisateur le répertoire .ssh. Pour cela:

debianhote:~$ mkdir ~/.ssh

Pour fabriquer la clé:

debianhote:~$ ssh-keygen -t dsa

Nom que l'on souhaite attribuer à la clé: "sdist" Il ne faut pas définir de passphrase, pour que la connexion soit accessible sans mot de passe: taper Entrée.

II-2) Configuration du client ssh

Il faut ajouter le fichier config tel que dans ~/.ssh/config:

Host sdist

HostName debianhote

User utilisateurduserveur

PasswordAuthentication no

IdentityFile ~/.ssh/sdist

 

Après cette étape, un ssh sdist sur la machine virtuelle doit afficher permission denied. En effet, la clé publique du client n'est pas présente dans la liste du serveur, celui-ci refuse donc la connexion.

 

II-3) Permissions sur le serveur

Il faut rajouter dans le ~/.ssh/authorized_keys de votre utilisateur sur le serveur, le contenu de ~/.ssh/sdist.pub. Utilisez par exemple scp pour envoyer cette clé en mode mot de passe, et ajoutez là ensuite au fichier précédent (ou remplacez le si il est vide, ce sera plus simple).

debianhote:~$ scp ~/.ssh/sdist.pub user@host:~/sdist.pub

Désormais, le serveur est accesible directement et sans mot de passe, en tapant sur la machine virtuelle

debianhote:~$ ssh sdist

 


III Scripts de sauvegarde

Selon vos besoins, vous devrez construire vos scripts en utilisant rsync. A titre informatif, voici un exemple. Placez vous ici toujours sur l'utilisateur simple.

debianhote:~$ mkdir ~/scripts

debianhote:~$cd ~/scripts

Un premier script.sh contient le "cadre": Message de lancement (echo), vérification de la connexion, en faisant un ping du serveurLancement des différents scripts rsync, arrêt de la machine:

à venir

Les scrips rsync peuvent être du genre:

rsync /media/sauvegarde --arv --progress -e ssh sdist:/home/server/sauvegarde

A vous d'agrémenter ceci selon vos objectifs.

 


IV Automatisation sur la machine virtuelle

Trois points ici:

IV-1) Programmation du lancement depuis Windows: Taches planifiées

Un clic droit sur le nom de la machine dans virtualbox permet de créer un raccourci sur le bureau. Il suffit ensuite de l'utiliser dans les taches planifiées pour lancer la sauvegarde. N'oubliez pas, les taches planifiées recquierent a priori que la session windows soit protégée par un mot de passe. Ceci peut en plus s'avérer utile, car la machine virtuelle elle n'est nullement protégée par mot de passe par la suite, et qu'un accès sur le serveur est crée.

IV-2) Création d'un autologin sur la machine virtuelle

Editer avec vim le fichier /etc/inittab, et remplacer la ligne:

1:2345:respawn:/sbin/mingetty tty1

Par:

1:2345:respawn:/sbin/mingetty --autologin utilisateurmachinevirtuelle

Désormais, au démarrage, la machine virtuelle doit conduire non plus à la demande d'identification mais au prompt de l'utilisateur local.

 

IV-3) Lancement du script au démarrage de la machine virtuelle

Il suffit d'éditer le .profile de l'utilisateur (situé dans son ~/), et d'ajouter votre script de sauvegarde avec un sh /home/utilisateur/script/script.sh Les scripts se lancent donc au démarrage.

 

IV-4) Arrêter la machine virtuelle en fin de sauvegarde

L'objectif est simple: permettre à l'utilisateur local de pouvoir arrêter la machine debian. En effet, sous Linux, seul root est normalement autorisé à procéder à l’arrêt. La commande sudo va nous permettre de palier à ce problème. On va modifier les paramètres dans le fichier de configuration afin d'autoriser l'arrêt. Pour éditer d'abord:

debianhote:~$ vim /etc/sudoers

Puis ajouter

User_Alias SHUTDOWNERS = utilisateur

SHUTDOWNERS ALL = NOPASSWD: /sbin/shutdown

On obtient l’arrêt via l'utilisateur en utilisant

debianhote:$~sudo shutdown -h now

 


Conclusion

La procédure est désormais 100% automatique: Les taches planifiées lancent la machine virtuelle, l'autologin se fait, et les scripts de sauvegarde se lancent. Dès qu'ils sont terminés, l'arrêt de la machine peut se faire. Les échanges sont cryptés via ssh/scp utilisé par rsync. Tout commentaire sera le bienvenu, sur le forum, ou via la fonction message du site.