Nicosmos a écritBonjour,
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.