Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 résolu, 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.

Hors 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 big_smile

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).

Hors ligne

#7 Le 13/09/2020, à 10:36

geole

Re : Un script de sauvegarde un peu plus intelligent ?

Nicosmos a écrit :

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