Voici un bout de temps que je voulais parler de cette astuce et il semblerait que cela soit au goût du jour. En effet j’ai eu une discussion avec un ami qui me disait avoir eu du mal à se faire un script de backup en bash qui ne copie que les fichiers ajoutés ou supprimés. Je vais donc vous parler de rsync qui est plus que pratique pour synchroniser des dossiers 🙂 Je vais vous décrire ci-dessous deux application, u ne qui me sert à récupérer mes sauvegardes sur mon serveur en ligne et une autre qui me permet de synchroniser mon dossier de documents personnels entre mon poste fixe sous Linux (Ubuntu) et mon Laptop qui est lui sous Windows (XP Pro). rsync est un logiciel libre sous licence GNU GPL. Il permet de synchroniser des dossiers en réalisant une copie incrémentale depuis un dossier source vers un dossier cible. Vous le trouverez sous Windows, Linux ou Mac OS. Pour l’installation rien de plus simple « apt-get install rsync » sous Ubuntu ou « urpmi rsync » sous Mandriva.
rsync d’un dossier distant via SSH :
rsync -av -e « ssh -p 9022 -i /home/iser/.ssh/id_rsa » –progress « user@serveur:/sauvegarde/ » /home/user/recup_sauvegardes/ >> /home/user/log_rsync.txt 2>&1
Comme pour toute commande vous pouvez accéder à la documentation avec « man rsync » ou tout simple sur divers sites internet comme ici en français ou ici en anglais. ici nous nous contentons de copier les nouveaux fichiers ou les fichiers modifiés sans suppression. Cela m’oblige en général à coupler cette commande en crontab avec un petit script se basant sur find pour supprimer les fichiers au bout d’un certain délai. Voici ci-dessous la commande en question :
REP= »/home/user/recup_sauvegardes/ »
find $REP -mtime +7 -name ‘*.tgz’ -delete
Ici je conserve les données pendant 7 jours (man page find). Cela permet d’avoir une récupération automatique de mes sauvegardes sans avoir à me soucier de nettoyer moi même le dossier les recevant. Cela ne m’interdit en aucun cas de vérifier le plus régulièrement possible la qualité des sauvegardes au cas où 😉 Cette méthode est pas mal mais elle a ses limitations. En effet dans le cas où on veut sauvegarder un disque complet ou bien un dossier où on ajoute ou supprime des fichiers, on souhaiterait se simplifier la vie.
Synchronisation d’un dossier Windows (Samba) avec un dossier sous Linux
Ceci est ma méthode, je suis sûr qu’il en existe d’autres, mais pour le moment elle me suffit 😉 Dans un premier temps il vous faut créer un partage de fichier sur votre ordinateur Windows. Nous pourrons ainsi y accéder avec Samba. Le plus simple est de le monter dans un dossier local avec cifs (urpmi cifs sous Mandriva ou apt-get install smbfs sous Ubuntu).
sudo mount -t cifs //10.0.0.13/e /mnt/partage-win -o uid=user,gid=user,file_mode=0640,dir_mode=0750,iocharset=utf8,credentials=/home/user/.smbserver
Il est obligatoire de monter le dossier avec root, mais nous pouvons stocker l’utilisateur et le mot de passe pour le partage samba dans un fichier comme ci-dessus. Le fichier en question contient uniquement ces éléments :
username=MyUser
password=MyPassword
L’autre solution peut-être de mettre l’utilisateur et le mot de passe directement dans la ligne de commande comme illustré ci-dessous :
sudo mount -t cifs //10.0.0.13/e /mnt/partage-win -o uid=user,gid=user,file_mode=0640,dir_mode=0750,iocharset=utf8,username=MyUser,password=MyPassword
Une fois le partage monté, vous y avez accès depuis votre machine sous Linux et vous pouvez alors y copier vos fichiers avec « cp », en déplacer avec « mv » ou toute autre action souhaitée. Dans notre cas il ne nous reste qu’à synchroniser nos deux dossiers :
rsync -av –delete –progress /media/MonDisque/MonDossier/ /mnt/partage-win/MonDossier/
Nous pouvons voir ici l’option supplémentaire « –delete » qui va supprimer les fichiers qui n’existent plus dans le dossier source. Cela permet d’éviter de devoir nettoyer manuellement le dossier de destination 😉 Dans le cadre d’une sauvegarde automatique, je vous inviterai à ne pas mettre cette option et à lance rune commande avec que quand vous voulez faire une remise à plat en étant sûr de ne rien perdre. On ne sait jamais des fois que vous auriez supprimer un fichier important par erreur dans votre dossier source 😉
Je me sers de la même commande pour synchroniser un disque de 500 Go contenant pleins de données, avec un disque USB de la même capacité. J’ai ainsi régulièrement une sauvegarde à jour de mon disque dur personnel et si il lâche comme c’est déjà arrivé par le passé, j’aurai bien moins de pertes. Bon d’accord, comme l’a dit un ami, quand on doit le faire manuellement c’est mal. Nous pourrions donc coupler cette méthode en tâche planifiée (cron) vers un NAS. Un NAS est un périphérique permettant d’avoir un ou deux disques en réseau. Souvent on trouve ce boitier avec deux disques durs en RAID 1 (miroir), c’est à dire se répliquant l’un sur l’autre, et branché sur le réseau, accessible en FTP ou en partage Samba. Bon je n’en suis pas encore là, mais j’y pense 😉 J’espère que cet article vous sera utile et vous aidera pour vos synchronisations ou vos sauvegardes. n’hésitez pas à partager vos trucs et astuces via les commentaires 🙂
Et avant d’oublier ou d’éteindre la machine sous Windows (si vous l’éteignez), n’oubliez pas de démonter le dossier :
sudo umount /mnt/partage-win