#1 Le 12/09/2020, à 16:49
- Nicosmos
Un script de sauvegarde un peu plus intelligent ?
Bonjour,
Je fais mes sauvegardes depuis des années avec un script du genre :
rsync -rtvpogl --modify-window=1 --stats '/media/data' '/media/sauvegarde' --exclude=dossiers-à-exclure
Crucial, je n’utilise pas l’option --delete: l’idée c’est que si je perd un fichier, en le supprimant malencontreusement par exemple, je peux toujours aller le repêcher sur mon disque de sauvegarde.
Seulement voilà, si un jour je perd mon ordinateur ou bien si son disque prend feu ou je n’en sais rien, en l’état, cette sauvegarde n’est pas restaurable, puis qu’elle contient absolument tout y compris les fichiers supprimés. Quel boulot ce serait de manuellement supprimer dans la restauration ce qui est censé ne plus être là.
Un nouveau script
Je voudrais faire un nouveau script de sauvegarde, basé ou non sur rsync, qui fonctionnerait comme ça :
Copier les nouveaux documents de l’ordi vers le disque de sauvegarde, en gardant l’arborescence (comme aujourd’hui)
Si un fichier de l’ordi n’est plus là, ne pas le supprimer du disque de sauvegarde, mais ne pas le laisser en place non plus…
…le déplacer plutôt dans un sous-dossier du disque de sauvegarde, si possible en gardant l’arborescence aussi.
Comme ça j’aurais toujours les fichiers supprimés sauvegardés et facilement accessibles, mais pas mélangés avec les bons fichiers restaurables. Il faudrait aussi que le script gère les dossiers à exclure comme rsync.
Un exemple :
J’ai ça sur l’ordi :
/media/data/document.txt
/media/data/image.png
/media/data/musique/morceau1.ogg
/media/data/musique/morceau2.ogg
Je fais la sauvegarde :
/media/sauvegarde/dernière/document.txt
/media/sauvegarde/dernière/image.png
/media/sauvegarde/dernière/musique/morceau1.ogg
/media/sauvegarde/dernière/musique/morceau2.ogg
Je supprime l’image et un morceau de musique de l’ordi :
/media/data/document.txt
/media/data/musique/morceau1.ogg
Je fais la sauvegarde (résultat souhaité) :
/media/sauvegarde/dernière/document.txt
/media/sauvegarde/dernière/musique/morceau1.ogg
/media/sauvegarde/supprimé/image.png
/media/sauvegarde/supprimé/musique/morceau2.ogg
À l’aide
Je ne connais pas bash, je ne connais quasi aucun utilitaire en ligne de commande, donc je ne sais pas du tout comment faire ça. Est-ce que quelqu’un peut m’aider à faire un script comme celui-ci ? Ou a une idée de comment mettre ça en place ? Ça ferait un petit utilitaire minimaliste de sauvegarde super utile !
Merci beaucoup !
~ Nicolas
Hors ligne
#2 Le 12/09/2020, à 17:12
- erresse
Re : Un script de sauvegarde un peu plus intelligent ?
Re bonjour, suite de l'autre fil...
As-tu simplement envisagé la fonctionnalité "rotation" des sauvegardes qui te permet de conserver plusieurs versions antérieures de sauvegarde : par exemple, une version annuelle, deux versions mensuelles, trois versions hebdomadaires...
Et pour une gestion pratique de "rsync" en mode graphique, pourquoi ne pas installer "LuckyBackup" qui peut te paramétrer tout ça sans te prendre la tête (et accessoirement, sans écrire de script, mais c'est peut-être justement ce qui te motive ?).
Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.
En ligne
#3 Le 12/09/2020, à 17:22
- Nicosmos
Re : Un script de sauvegarde un peu plus intelligent ?
Merci pour ta réponse,
J’aimerais garder mon expérience de sauvegarde aussi simple que possible : aujourd’hui je clique sur un fichier sh que j’ai en favoris, et hop ma sauvegarde est faite. Aucune réflexion à faire, aucune dépendance logicielle. Je crois qu’avec n’importe quelle autre système je me retrouverais à faire des sauvegardes moins souvent…
Du coup la solution que je décrivais c’est la plus simple que j’ai pu imaginer : une fois le script fait, la routine reste la même, cliquer et c’est fait. La seule chose qui change c’est la qualité de la sauvegarde le jour éventuel où je dois la restaurer.
Hors ligne
#4 Le 12/09/2020, à 17:50
- geole
Re : Un script de sauvegarde un peu plus intelligent ?
Bonjour
Je pense à quelque chose de simple. Il me semble que tu as une structure identique entre EMETTEUR et RECEPTEUR.
Parcours le RECEPTEUR et pour chaque fichier rencontré, regarde s’il est présent dans le EMETTEUR, si pas présent , Il faudra faire un déplacement dans un autre répertoire.
Il faudrait aussi regarder la suppression de resync associée au paramètre --max-delete=0, elle pourrait produire la liste des fichiers qui auraient du être supprimés mais ne l’ont pas été.....
sending incremental file list
EMETTEUR/
Deletions stopped due to --max-delete limit (1 skipped)
sent 67 bytes received 20 bytes 174.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: the --max-delete limit stopped deletions (code 25) at main.c(1207) [sender=3.1.3]
Tu peux aussi fouiller dans un script qui semble se rapprocher de ton problème..... Tu auras quelques commandes de parcours
https://forum.ubuntu-fr.org/viewtopic.php?id=287927
Dernière modification par geole (Le 12/09/2020, à 18:57)
Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit, utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248
Hors ligne
#5 Le 12/09/2020, à 18:36
- kamaris
Re : Un script de sauvegarde un peu plus intelligent ?
C'est des sauvegardes incrémentales que tu veux faire.
Pour ça il y a tar, ou bien git
Hors ligne
#6 Le 12/09/2020, à 18:55
- bruno
Re : Un script de sauvegarde un peu plus intelligent ?
On peut parfaitement faire des sauvegardes incrémentales avec rsync en faisant un lien avec la sauvegarde précdente (cf man rsync et --link-dest).
#7 Le 13/09/2020, à 10:36
- geole
Re : Un script de sauvegarde un peu plus intelligent ?
Bonjour,
Je voudrais faire un nouveau script de sauvegarde, basé ou non sur rsync, qui fonctionnerait comme ça :
Je fais la sauvegarde (résultat souhaité) :
/media/sauvegarde/dernière/document.txt /media/sauvegarde/dernière/musique/morceau1.ogg /media/sauvegarde/supprimé/image.png /media/sauvegarde/supprimé/musique/morceau2.ogg
À l’aide
~ Nicolas
Bonjour
Il me semble que c'est une très bonne idée de vouloir conserver les versions moins une des fichiers "modifiés".
A mon avis, un fichier peut être modifié de deux façons: En modifiant quelques caractères ou en supprimant le fichier !
Nota: Le fait de remplacer la totalité des caractères par rien du tout est pris en charge par rsync mais pas par ta demande!!
Le fait de supprimer un fichier, quasiment équivalent à ma remarque, n'est pas pris en charge par rsync mais le serait par ta demande qui ne prend pas en charge l'écrasement d'un fichier par fausse manipulation.
Je te propose de regrouper les deux demandes pour une amélioration du concept.
Voici donc le script que j'ai rapidement fait
find /DPP/Users/BB -type f | sort > /home/a/TEST-RSYNC/EMETTEUR/filesystem.txt
rsync -rltgoDv --backup --backup-dir=/home/a/TEST-RSYNC/ANCIEN-$(date +'%Y-%m') /DPP/Users/BB /home/a/TEST-RSYNC/RECEPTEUR
find /home/a/TEST-RSYNC/RECEPTEUR -type f |sort > /home/a/TEST-RSYNC/EMETTEUR/nfs.txt
sed -i -e "s/\/DPP\/Users\// /g" /home/a/TEST-RSYNC/EMETTEUR/filesystem.txt
sed -i -e "s/\/home\/a\/TEST-RSYNC\/RECEPTEUR\// /g" /home/a/TEST-RSYNC/EMETTEUR/nfs.txt
diff -U 1 /home/a/TEST-RSYNC/EMETTEUR/filesystem.txt /home/a/TEST-RSYNC/EMETTEUR/nfs.txt >/home/a/TEST-RSYNC/EMETTEUR/Diff.txt
grep "^+ " /home/a/TEST-RSYNC/EMETTEUR/Diff.txt > /home/a/TEST-RSYNC/EMETTEUR/Diff1.txt
sed -i -e "s/+ //g" /home/a/TEST-RSYNC/EMETTEUR/Diff1.txt
EMET="/home/a/TEST-RSYNC/RECEPTEUR"
RECEPT="/home/a/TEST-RSYNC/ANCIEN-$(date +'%Y-%m')"
while IFS= read -r Line
do
# Récupération du nom de la directory
Dir=$(echo $Line | sed 's/\/[^/]*$//')
# Création du répertoire parent
mkdir -p $RECEPT/$Dir 2>/dev/null
mv $EMET/$Line $RECEPT/$Line
# Epuration du répertoire parent
rmdir -p $EMET/$Dir 2>/dev/null
done < /home/a/TEST-RSYNC/EMETTEUR/Diff1.txt
Il reste à le paramétrer à ton goût. Je peux le faire mais il faudrait que tu confirmes que
/media/sauvegarde/dernière est bien le répertoire de stockage de la totalité des fichiers doublons de la référence.
/media/sauvegarde/supprimé est bien le répertoire de ce qui tu as supprimé depuis l'année 1970.
Je t'invite à réfléchir sur la notion de versionning en faisant une version mensuelle (annelle?) qui contiendrait à la fois les fichiers modifiés et les fichiers supprimés pendant le mois (l'année) en cours. Ou a la duplication, chaque début de mois/d'année de la référence.
AJOUT. Voici une proposition que j'ai testé en version 20.04 en créant un répertoire avec quelques fichiers que j'ai supprimé après le transfert. Le second transfert les a mis dans le répertoire "supprimés".
Je t'invite à faire un test. Personnellement, je pense que c'est normal de conserver aussi la version moins 1 des fichiers.
Voici donc le script à tester
Dernier="/media/sauvegarde/dernière"
Sup="/media/sauvegarde/supprimé-$(date +'%Y-%m')"
rsync -rltgov --delete --backup --backup-dir=$Sup --exclude=.cache $HOME $Dernier
En résume, RSYNC considère que la suppression d'un fichier est assimilée à une modification d'un fichier. La littérature lue semble montrer que ce n'était pas le cas au début. Je t'invite donc à tester avant de mettre en vrai l'option.
Dernière modification par geole (Le 13/09/2020, à 23:22)
Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit, utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248
Hors ligne