Salut les amis, voila je veux faire un script de backup.
Je dois lui donner deux arguments
1. le nom d'un fichier qui contient des repertoires à sauvegarder
2. le nombre de jours de dernière modification des fichiers
Si on donne ce 2 e argument, on fait 1 backup des fichiers modifiés depuis ce nombre de jours sinon backup complet.
voila ce que j'ai fait mais ça ne fonctionne pas.
#!/bin/bash
while read line
do
echo -e "line\n"
done < $1 | find $1 -mtime -$2 | tar -c-T-f /home/backup.tar
# find pour rechercher dans le fichier passé en 1er argument
# -mtime -$2 pour spécifier les fichiers modifiés depuis le
# nombre de jour passés en 2ème argument
# on passe à pipe
# tar -c-T-f pour créer l'archive
# -c pour la céer
# l'option -T pour obtenir le nom des fichiers à archiver
# l'option -f pour le fichier backup.tar
Il y a plein d'erreurs je sais....si quelqu'un a la solution je lui en saurai gré. Merci
(je travaille sous FC6)
# Pas à Pas :-)
Posté par Steve Azriel . Évalué à 1.
Je ne pourrais pas forcément te donner une solution à ton problème mais voici quelques points d'attention:
1) Bloc n°1
=> Ce bout de code (avec une coquille dans le echo où il faudrait un $line afin d'afficher le contenu de la variable line) ressemble fortement à la commande "cat $1" :-)
2) Bloc n°2
=> Pas trop compris. A moins que tu ne souhaites effectuer un find pour chaque ligne du fichier $1 ?!?
A ce moment là, la boucle while qui précède peut être utilisée en remplaçant la ligne "echo ..." par "find $line -mtime $2"
Voici un code de remplacement pour les bloc 1&2:
3) Bloc n°3
=> Il ne manquerait pas un '-' pour l'option '-T' (aka '--files-from=' parce que je préfère la version longue :P) afin de lire sur l'entrée standard la liste des fichiers à prendre en compte ?
Autrement dit, on aurait "tar -c -T - -f ...".
En parcourant la page info du tar GNU, j'ai trouvé un chapitre "Performing Backups and Restoring Files" [http://sunsite.ualberta.ca/Documentation/Gnu/tar-1.13/html_c(...)]
Peux-être une piste à envisager pour tes backups ?
Enfin, pour les scripts en BASH (je précise car tous les shells ne sont pas forcément compatibles), il y a le "Advanced Bash-Scripting Guide" [http://tldp.org/LDP/abs/html/] à garder sous le coude ^__^
Bon courage !
Cdlt,
[^] # Re: Pas à Pas :-)
Posté par NeoX . Évalué à 2.
mais pour le tar
je verrais plutot :
tar -cf /home/backup.tar -
car l'option
-T, --files-from F
get names to extract or archive from file F
precise à tar de prendre les fichiers à archiver dans le fichier F
dans notre cas c'est find qui renvoie les fichiers à archiver
et comme il va envoyer les fichiers 1 par 1 je mettrais l'option
-r
à tar
ou alors je stocke tous les fichiers trouver par find dans un fichier temporaire, que j'irais alors lire avec le -T
enfin l'option -z pour compresser le tout.
ca donnerait donc
soit find $1 -mtime $2 | tar crzf /home/backup.tar.gz -
soit en deux temps
find $1 -mtime $2 >/tmp/fichier_temporaire
tar crzf /home/backup.tar.gz -T /tmp/fichier_temporaire
[^] # Re: Pas à Pas :-)
Posté par Steve Azriel . Évalué à 1.
Perso, je vote pour le fichier temporaire :-)
Merci pour l'astuce "option '-r' (aka --append) couplée avec le '-' à la fin" ^__^ ! Je la testerais sûrement bientôt, me connaissant.
La proposition que j'avais faite, était basée sur l'hypothèse que le fichier /home/backup.tar était écrasé/remplacé (s'il existait) à chaque exécution du script.
Ainsi (sous réserves d'avoir des entrées correctes et valides):
crée un fichier tar "/home/backup.tar" contenant uniquement les fichiers/dossiers listés par la boucle while.
Au passage, en rajoutant l'option "\! -type d" avant l'option "-mtime" à la commande find, nous n'aurons pas et les répertoires et les fichiers des répertoires.
Autrement dit, éviter de générer une liste du type: /chemin et /chemin/fichier (voir /chemin/sous-chemin/fichier), car je ne sais pas comment la commande tar GNU gère cela.
etc... (utiliser une valeur par défaut pour $2 comme ${2:-999999}, ...)
@+
PS: Pour info, je travaille plutôt sous OpenBSD (non, je ne troll pas ^__^) et les commandes ne sont pas forcément semblables en fonctionnalités :/
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.