Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/10/2006, 12h41   #1
Membre à l'essai
 
Inscription : octobre 2006
Messages : 83
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 83
Points : 23
Points : 23
Par défaut Script de backup

Bonjour!

Je cherche à réaliser un script qui me permettrait de sauvegarder l'ensemble d'un répertoire ("/home/user1" par exemple) dans un autre répertoire ou un fichier tar.

Problème: je suis un grand débutant en "scriptologie" (traduction: je suis complètement nul )

J'aimerais aussi que ce script ne sauvegarde à chaque fois que les fichiers qui ont été modifiés depuis le dernier backup (l'idée serait en effet de mettre le script dans la crontab).

Voilà! Je sais que pour des grosses bêtes du script écrire un petit programme comme ça est à peine plus compliqué que de commander du pain à la boulangère du coin

Alors si une âme charitable était d'accord pour réaliser ce bout de code...

Marchi d'avance.
d10g3n est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2006, 12h50   #2
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
lit le manuel de rsync .......

une base :
Code :
rsync -t /home/user1/* [hosts]:/repertoire_de_sauvegarde/user1
le [hosts]: uniquement si tu sauvegarde sur une autre machine.
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2006, 12h57   #3
Membre à l'essai
 
Inscription : octobre 2006
Messages : 83
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 83
Points : 23
Points : 23
Super !! "man rsync" ; c'est exactement ce qu'il me fallait

Merci beaucoup!

Par contre: après je sauvegarde la ligne de code dans un fichier du genre "backup.sh"? que je rends exécutable et que je place dans crontab, c'est ça?
d10g3n est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2006, 13h01   #4
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
exacte pour un "backup.sh".
Attention toutefois, un script en crontab ne doit JAMAIS prejuger de variables d'environnements (PATH, LIBARY, HOME, .....) et donc toujours les initialiser lui même, lezs cheminin de commande doivent être tous en absolu.
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2006, 13h08   #5
Membre à l'essai
 
Inscription : octobre 2006
Messages : 83
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 83
Points : 23
Points : 23
Citation:
les cheminin de commande doivent être tous en absolu.
Ok, c noté. Merci encore.

Au fait, il semblerait plutôt que la commande soit:

rsync -a /home/user1/* [hosts]:/repertoire_de_sauvegarde/user1

en effet, selon man:

Citation:
-a, --archive
Ceci est équivalent à -rlptgoD. C'est un moyen rapide de dire
que vous voulez la récursion et tout préserver pratiquement
tout. La seule exception est que si --files-from a été spécifié
alors -r n'est pas utilisée.


Sinon en cherchant sur google j'ai trouvé ça:

http://www.mikerubel.org/computers/rsync_snapshots/

C'est en anglais, c'est très complet, apparement en plus de rsync il conseille d'utiliser des liens en dur.
d10g3n est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2006, 16h12   #6
Membre à l'essai
 
Inscription : octobre 2006
Messages : 83
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 83
Points : 23
Points : 23
Bon très bien, tout fonctionne. Pour le cas où quelqu'un est intéressé par ce problème, je vais détailler la démarche pas à pas, bref, faisons un petit:

TUTO BACKUP

Le but de ce tuto est donc de sauvegarder quotidiennement le contenu d'un répertoire "/chemin/rep1" vers un autre répertoire: "/chemin/rep2".

Première étape, créer un fichier /usr/bin/backup.sh qui contiendra l'ordre de copier rep1 vers rep.
Donc, ouvrir un terminal et passer en mode super utilisateur:

Code :
1
2
$su
Password: votre mot de passe root
Si tout s'est bien passé, vous avez un "#" à la place du "$".
Ensuite, créer et éditer le fichier /etc/bin/backup.sh:

Code :
#kwrite /etc/bin/backup.sh
Kwrite s'ouvre, vous êtes face à une page blanche. Taper:

Citation:
#!/bin/bash
rsync -a /chemin/rep1 /chemin/rep2
"-a" vous assure à la fois que la copie sera récursive (contiendra tous les sous répertoires de /chemin/rep1) et que seul les fichiers modifiés seront réenregistré à chaque fois (et donc évitera de faire mouliner votre ordinateur pendant des heures à chaque fois).

Tel quel, si vous créez un jour un fichier "toto" dans /chemin/rep1, et que vous l'effacez le lendemain ; le fichier toto restera pour toujours présent dans /chemin/rep2.

Si vous voulez que lors de la supression d'un fichier de /chemin/rep1 il soit aussi effacer de /chemin/rep2, alors il faut ajouter l'option "--delete" :

Code :
1
2
#!/bin/bash
rsync -a --delete  /chemin/rep1 /chemin/rep2
Une fois que vous avez entrez l'une de ces deux lignes de codes, vous enregistrez et vous quittez.

Vous êtes normalement de retour dans la console. On va maintenant éditer le fichier /etc/crontab qui définit toutes les tâches qui doivent être effectuées régulièrement:

Vous voilà dans votre fichier crontab. Normalement il devrait déjà contenir des lignes de codes. Voilà par exemple ce contient le mien:

Citation:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
02 4 * * * root nice -n 19 run-parts --report /etc/cron.daily
22 4 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
42 4 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
5 * * * * root /usr/bin/noip-update
Vérifiez bien que la première ligne "SHELL=/bin/bash" existe. Sinon, rajoutez là.
La partie qui nous intéresse est "run-parts". C'est elle qui contient la liste des programmes à exécuter régulièrement ainsi que leur fréquence d'exécution.

La première partie de l'entrée de crontab décrit quand l'action sera effectuée. Il y a cinq champs, séparés par un espace ou une tabulation, dont chacun est paramétré soit par, un nombre, une étoile (*), ou le texte approprié. Les champs sont, dans l'ordre, minute, heure, jour du mois, mois et jour de la semaine. Le mois et le jour de la semaine permettent l'utilisation d"une abréviation (suivant les jours et mois en anglais), telle que jan pour janvier (January) ou thu pour jeudi (Thursday).

Nous allons donc rajouter la ligne:

Citation:
5 * * * * root /usr/bin/backup.sh
Elle signifie que le programme /usr/bin/backup.sh sera exécuté à chaque heure et cinq minutes (à 0h05; 1h05, 2h05, etc...). Si vous voulez plutôt que la sauvegarde s'effectue tous les jours à 23h05 :


Citation:
5 23 * * * root /usr/bin/backup.sh
Tous les 5 du mois à 23h05:


Citation:
5 23 5 * * root /usr/bin/backup.sh
etc...

Voilà!!

Quelques liens

pour rsync:

http://doc.ubuntu-fr.org/serveur/rsync


un très bon article:

http://www.linuxfocus.org/Francais/M...ticle326.shtml


dans le forum de developpez:

http://developpez.net/forums/showthread.php?p=1393418


avec un réseau:
http://www.bidon.ca/Automatiser_les_...vec_rsync.html



pour cron:

http://doc.ubuntu-fr.org/applications/cron
http://www.linux-france.org/article/...ntfaire-8.html

et bien sûr:


Code :
1
2
$man rsync
$man crontab
d10g3n est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2009, 17h28   #7
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 248
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 248
Points : 31
Points : 31
merci c cool c tuto, tres interessent
graaaaaaaaaaaaand merci
glasgow est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h38.


 
 
 
 
Partenaires

Hébergement Web