Bonsoir à tous !!!!
J'aurais une question à vous poser. J'ai un script de backup, qui fonctionne parfaitement,
mais qui n'est pas très sexy sur un point : je voudrais pouvoir exclure ou inclure rapidement des répertoires
en faisant un tableau, dans lequel je met en commentaire ou non le répertoire, selon qu'il doit être exclu ou inclu
du processus de backup.
Voici mon code actuel :
[bastien@zoulou /]$ cat backup_OS.sh
#!/bin/sh
destination=/media/RAID5/BACKUP_OS
START=$(date +%s)
rsync --archive --delete --acls --xattrs --verbose /* $destination --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found,/home/*/.gvfs,/var/lib/pacman/sync/*,/opt/*,/home/bastien/DOCUMENTS,/home/*/.thumbnails*,/tmp/*,/home/*/.mozilla,/home/*/.thunderbird}
FINISH=$(date +%s)
echo "total time: $(( ($FINISH-$START) / 60 )) minutes, $(( ($FINISH-$START) % 60 )) seconds"
echo "SYNC"
sync
rm $destination/Backup\ from\ *
touch $destination/"Backup from $(date '+%A, %d %B')"
[bastien@zoulou /]$
L'idéal serait d'avoir :
EXCLUDE_LIST="/dev/*, \
/proc/*, \
/sys/*, \
/tmp/*, \
/run/*, \
/mnt/*, \
/media/*, \
/lost+found, \
/home/*/.gvfs, \
/var/lib/pacman/sync/*, \
/opt/*, \
/home/bastien/DOCUMENTS, \
/home/*/.thumbnails*, \
/tmp/*, \
/home/*/.mozilla, \
/home/*/.thunderbird"
Ainsi je pourrais exclure de l'exclusion un répertoire via le caractère #.
Puis d'utiliser cette variable comme ceci :
rsync [.....blahblah....] --exclude=$EXCLUDE_LIST
Mais ça ne fonctionne pas !
Auriez-vous une idée ?
Bonne soirée les GNU/Linuxiens (et aussi aux GNU/Linuxiennes… :)
#### EDIT du 07 septembre 2013:####
J'ai trouvé une solution très propre et concise :
1. Fichier Backup_OS.sh :
[bastien@zoulou /]$ cat backup_OS.sh
#!/bin/sh
destination=/media/RAID5/BACKUP_OS
rsync --archive --delete --acls --xattrs --verbose --exclude-from 'exclude.txt' / $destination
echo "SYNCING..........."
sync
touch $destination/"Backup from $(date '+%A, %d %B')"
2. Fichier Backup_DOCUMENTS.sh :
[bastien@zoulou /]$ cat backup_DOCUMENTS.sh
#!/bin/sh
destination=/media/RAID5/BACKUP_DOCUMENTS
rsync --archive --delete --acls --xattrs --verbose /home/bastien/DOCUMENTS/ $destination
echo "SYNCING..........."
sync
touch $destination/"Backup from $(date '+%A, %d %B')"
3. Fichier ecxclude.txt :
[bastien@zoulou /]$ cat exclude.txt
/dev/*
/proc/*
/sys/*
/tmp/*
/run/*
/mnt/*
/media/*
/lost+found
/home/*/.gvfs
/var/lib/pacman/sync/*
/opt/*
/home/bastien/DOCUMENTS
/home/*/.thumbnails*
/tmp/*
/home/*/.mozilla
/home/*/.thunderbird
[bastien@zoulou /]$
Si ça peut servir à quelqu'un…
# Ça m’intéresse aussi !
Posté par Zylabon . Évalué à 3.
J'ai un script du même genre avec le même problème.
Sinon, pourquoi tu fais pas du backup incrémental avec rsync ? c'est cool et pas cher !
Please do not feed the trolls
[^] # Re: Ça m’intéresse aussi !
Posté par PolePosition . Évalué à 1.
Hi,
Même si je connais bien le principe de full-backup et incremental-backup, je n'avais jamais creusé avec rsync pour mon PC perso.
Je vais me pencher dessus, car effectivement, depuis quelques jours je me disais que ce serait bien d'avoir quelques versions antérieures, just in case of….
Merci !
[^] # Re: Ça m’intéresse aussi !
Posté par Zylabon . Évalué à 3.
Quelques version antérieurs et le fait que ça va vachement plus vite (sur le réseau en tout cas).
Je ne montrerais pas mon script parce que j'en ai trop honte, mais basiquement j'ai fais ça :
rsync --link-dir=last-backup $SOURCE $DESTINATION_DATE
rm last-backup
ln -s $DESTINATION_DATE last-backup
Please do not feed the trolls
[^] # Re: Ça m’intéresse aussi !
Posté par PolePosition . Évalué à 0.
Euh pardon, dans mon dernier post, je voulais dire que je ne sais pas comment faire de SNAPSHOT avec rsync…
Des incremental-backup, j'en fais tous les jours avec mon script… :)
# --exclude-from=/path/to/file
Posté par i M@N (site web personnel) . Évalué à 4.
ça m'intéresse, actuellement j'utilise rsync avec le paramètre --exclude-from=/path/to/file avec un fichier file tel que :
- .bak.
- .bak/
- *cache/
- dump/*
- *.gz
wind0w$ suxX, GNU/Linux roxX!
[^] # Re: --exclude-from=/path/to/file
Posté par PolePosition . Évalué à 1.
Hi,
Dans le fichier script ce serait plus simple je pense.
Un seul fichier c'est toujours plus simple.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 1.
Ce commentaire a été supprimé par l’équipe de modération.
# Here-document
Posté par Michaël (site web personnel) . Évalué à 4.
Le procédé standard est de définir une fonction
make_exclude_list
du styleou bien si tu préfères éviter d'avoir un fichier externe,
et tu définis ta variable
EXCLUDE_LIST
par[^] # Re: Here-document
Posté par PolePosition . Évalué à 0.
Hi,
Marche po. :-(
J'ai finalement opté pour la solution avec deux fichiers…
Si vous aviez une idée, ça m'arrangerait.
Merci,
Bastien
[^] # Re: Here-document
Posté par Michaël (site web personnel) . Évalué à 3.
C'est pas
mais plutôt
Trois conseils: 1. pour le débogage (trace) utilise l'option x du shell ou place un
echo
devant les lignes que tu veux vérifier; 2. découpe le plus possible ton programme en fonctions, car tu peux tester chaque fonction individuellement pour t'assurer de son bon fonctionnement; 3. lis des scripts shells écrits par d'autres (par exemple les scripts du système), cela t'apprendra des tas de choses![^] # Re: Here-document
Posté par PolePosition . Évalué à -1.
I'm so sorry!
MA_VIE
Il y a des langages que je ne comprendrai jamais : Bash et MATLAB
N'y a-t-il que le C que je suis capable de comprendre ?
/MA_VIE
J'utilise ça et ça ne fonctionne pas…
Pour l'instant, je fais donc tourner "l'ancien" script, qui marche vraiment bien, à part que je ne peux pas exclure de folder facilement…
Si quelqu'un(e) pouvait me donner un coup de main…
# Ccollect
Posté par Benjamin Henrion (site web personnel) . Évalué à 0.
Cela s'appelle Ccollect:
http://www.nico.schottelius.org/software/ccollect/
Il supporte les excludes, tous les arguments de rsync, logging, etc…
Et simple a modifier car ecrit en bash.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.