Outils pour utilisateurs

Outils du site


Action disabled: diff
sauvegarde

Ceci est une ancienne révision du document !


Comparatif des softs de sauvegarde

https://wiki.archlinux.org/index.php/Synchronization_and_backup_programs

Back in time y apparait dans File-based increments… mais ne supporte pas le: “Handles renames”: moved/renamed files are detected and not stored or transferred twice; it typically means that a checksum is computed for files or chunks thereof.

Solution

Cette page propose d'utiliser Back In time et d'effectuer sur le disque de sauvegarde la “compression” en économisant la place occupées par le fait que Back In time ne supporte par “Handles renames”. Elle propose également un script pour détecter les fichiers qui ne peuvent être sauvés par backintime pour des raisons de droits d'accés.

Test pour savoir si les fichiers peuvent être lus (et donc sauvés) par l'utilisateur courant

Un script qui liste en récursif les fichiers dont l'utilisateur courant n'a pas les droits en lecture: (inspiré de : http://unix.stackexchange.com/questions/88573/find-files-that-a-user-can-not-read )

testreadable.sh:

#/bin/bash
#Script to detect recursively files that a user do not have access to.
#Bertrand VANDEPORTAELE 2016
#inspired from http://unix.stackexchange.com/questions/88573/find-files-that-a-user-can-not-read
#run this script from the folder where you want to detect the file that USERNAME don't have access to
#this script has to be run as sudo in order to recurse inside directory with restricted read access
 
#write the username for whom to test access right
USERNAME=bvandepo
 
find . -print0 | sudo -u $USERNAME perl -Mfiletest=access -l -0ne 'print unless -r'
cd folder_to_save
sudo testreadable.sh

si le script est rangé dans le dossier scripts de l'utilisateur

sudo /home/bvandepo/scripts/testreadable.sh 

Back In Time

https://doc.ubuntu-fr.org/backintime

sudo add-apt-repository ppa:bit-team/stable
sudo apt-get update
sudo apt-get install backintime-gnome   

Attention: backintime ne peut sauver que des fichiers dont l'utilisateur qui lance backintime a les droit en lecture…. un fichier de root en 600 ne sera donc pas sauvable si on a lancé backintime en tant qu'utilisateur lambda.

Le fichier de configuration est très important pour pouvoir restaurer En effet sans cela le programme ne peut restaurer quoi que ce soit, il faut connaitre le chemin des répertoires ET le nom de la machine d'origine. Il est donc très important de sauvegarder aussi tout le répertoire de configuration de backintime!!!

mkdir /media/bvandepo/HD3TO14/savebackintime

Disons que je veuille sauvegarder le dossier /media/HD500GO/donnees

backintime-qt4

http://backintime.le-web.org/documentation/

cocher préference→options→Vérifier les changements….

Attention, avec cette option, si on a juste changé des droits sur les fichiers mais modifié le contenu d'aucun, aucune nouvelle sauvegarde n'est créée et donc les nouveaux droits ne sont pas pris en compte. Il faut qu'il y ait au moins un fichier changé

préference→options→Utiliser le checksum pour détecter les changements

ensuit il y a le choix, soit on fait une copie des fichiers en conservant leurs attributs, mais cela risque de poser des problèmes pour la détections des doublons présentés plus bas et surtout pour la restauration après, si plusieurs fichiers avec des attributs différent ont été hardlinkés. avantage, c'est plus rapide et on peut copier directement pour restaurer:

préference→options→Mode rsync complet (snapshots pas en lecture seule et cible = partition qui supporte les attributs linux)

Sinon, on peut faire une sauvegarde avec des droits en lecture seule et un fichier qui récapitule les droits sur le disque au moment de la sauvegarde, de sorte que l'on puisse les restaurer avec backintime. Ceci marche très bien avec la détection des doublons:

préference→options→Mode rsync complet à décocher

NE PAS CHANGER CETTE OPTION ENTRE LES SAUVEGARDES CAR SINON IL Y AURA LES 2 VERSIONS DES FICHIERS QUI NE SERONT PAS FUSIONNABLES

Back in time utilise des “hardlinks” pour gérer les doublons issus des différentes sauvegardes contrairement au symlinks, il n'y a pas LE fichier et des liens vers lui, mais plusieurs fichiers faisant référence au même inode. ( http://superuser.com/questions/12972/how-can-you-see-the-actual-hard-link-by-ls ) Pour voir les numéros de inode associé a un fichier:

ls -i

Les données sont effectivement effacées lorsque le dernier hardlink est effacé. Pour voir le nombre de hardlinks associés à un fichier, regarder la seconde colonne de (dans le cas des dossiers ????)

ls -l

Pour voir quels sont les differents hardlinks associé à un inode

find /media/bvandepo/HD3TO14/savebackintime/ -inum 147062873

Par defaut du affiche la taille réellement occupée, pour connaitre la taille en faisant les sommes des hardlinks, utiliser:

du -l

On peut effacer à la main des instantanés mais il faut être sudo, car pb de droits:

sudo rm -rf /media/bvandepo/HD3TO14/savebackintime/backintime/rapid/bvandepo/1/20161025-181753-656/

Gestion des doublons

En cas de renommage ou de déplacements des fichiers, back in time va copier les nouveaux fichiers sans savoir qu'ils sont identiques aux anciens. Pour réduire la taille sur le disque de sauvegarde, nous allons utiliser un soft qui détecte les doublons:

A N'UTILISER QUE SUR LE DISQUE DE SAUVEGARDE, PAS SUR LE DISQUE SYSTEME CAR: “We use this method when duplicate files are kind of “read-only”. Because if you replace 2 duplicate files with hardlink pointing to common storage, editing one will change others content. If this is fine, then you can go ahead.” En plus je ne sais pas comment il gère les droits d'accès qui peuvent être différents…

DONC CECI IMPLIQUE QUE LA SAUVEGARDE SE TROUVE SUR UN DISQUE DIFFERENT DE L'ORIGINAL!!!!!!

fdupes: NON

rdfind: OUI

sudo apt-get install rdfind

Ne pas executer depuis n'importe ou car crée un fichier results.txt dans le dossier courant IMPORTANT: dans l'affichage de rdfind “removed 0 files …” veut dire de la liste des fichiers à traiter, pas du disque… l'option “-removeidentinode false” ne veut pas dire enlever du disque mais des listes de fichiers a traiter, il faut donc ne pas l'utiliser!

ATTENTION: rdfind considére des fichiers identiques avec des droits différents comme des fichiers différents et ne va donc pas les hardlinker…

Pour voir les changements à faire sans les appliquer:

rdfind ./ -makehardlinks true  -dryrun true 

Pour appliquer les changements de fichiers en hardlinks (a faire en sudo à cause de backintime qui change les droits):

sudo rdfind ./ -makehardlinks true -outputname results-date.txt

Si besoin d'automatiser et donc de ne pas taper le mot de passe sudo, voir visudo dans doclinux

En utilisant directement rdfind, les fichiers config de backintime sont hardlinkés…

DUPTYPE_FIRST_OCCURRENCE 84 4 4187 2081 147062946 1 ./rapid/bvandepo/1/20161025-200147-708/config
DUPTYPE_WITHIN_SAME_TREE -84 4 4187 2081 147062923 1 ./rapid/bvandepo/1/20161025-195632-320/config

il n'y a pas d'option pour exclure certains fichiers du traitement de rdfind, par contre je peux lui construire une liste de dossier à traiter, qui seront des sous dossiers dans lesquels il n'a pas de fichiers de config de backintime

Création d'un script compressToHardlinks.sh qui génère la liste de dossiers à traiter:

#/bin/bash
#Script to hardlink duplicate files in folders created by backintime
#Bertrand VANDEPORTAELE 2016
#run this script from the folder where you want the results files to be generated
 
#Set this variable to the folder where backtime saves the files
BASE_DIR=/media/bvandepo/HD3TO14/savebackintime/backintime/rapid/bvandepo/1/
 
 
#To only detect the duplicates without applying the hardlink, uncomment the following line
#PARAM_TEST="-dryrun true"
 
 
# http://www.thegeekstuff.com/2013/05/date-command-examples
DATE_VAL=`date +%F%T`
echo   date: "${DATE_VAL}" 
RESULT_FILE="rdfind_result_${DATE_VAL}.txt"
echo   result file: "${RESULT_FILE}" 
echo ----------------------------------------------------------------------------------------
echo generating folder list...
echo ----------------------------------------------------------------------------------------
for i in  `ls -d ${BASE_DIR}*`
do
NEW_DIR="${i}/backup/"
if test -z "${LIST_DIR}"
then
#the variable does not exist yet
LIST_DIR="${NEW_DIR}"
else
LIST_DIR="${LIST_DIR} ${NEW_DIR}"
fi
done
echo ----------------------------------------------------------------------------------------
echo processing the folder list: ${LIST_DIR}
echo ----------------------------------------------------------------------------------------
#CMD="sudo rdfind ${LIST_DIR} -makehardlinks true ${PARAM_TEST} -outputname ${RESULT_FILE}"
CMD="sudo rdfind ${LIST_DIR} -makehardlinks true ${PARAM_TEST} -outputname ${RESULT_FILE}"
echo "generated command: ${CMD}"
#execute it 
eval "$CMD"
echo ----------------------------------------------------------------------------------------
echo displaying results...
echo ----------------------------------------------------------------------------------------
cat ${RESULT_FILE}

restauration d'un fichier

backintime génère la commande rsync suivante:

rsync -rtDHh --checksum --links --no-p --no-g --no-o --info=progress2 --no-i-r -R -v --chmod=Du=rwx,Fu=rX,go= --backup --suffix=.backup.20161025 "/media/bvandepo/HD3TO14/savebackintime/backintime/rapid/bvandepo/1/20161025-212628-518/backup/./media/HD500GO/donnees/testdisk4.log" "/"
building file list ... done
media/HD500GO/donnees/testdisk4.log
sent 56.74K bytes  received 31 bytes  113.55K bytes/sec
total size is 56.57K  speedup is 1.00
Restaurer les permissions :
chmod /media/HD500GO/donnees/testdisk4.log 100644
Restaurer les permissions : Terminé

Vérifier si les droits sont bien gardés malgré la génération des hardlink

Lecture des infos depuis les fichiers bz2

ATTENTION BZIP2 EFFACE LE FICHIER BZ2 PAR DEFAUT, utiliser -k pour conserver le fichier original

cd /media/bvandepo/HD3TO14/savebackintime/backintime/rapid/bvandepo/1/last_snapshot

Ce fichier n'existe que si on n'a pas coché préference→options→Mode rsync complet , il contient les droits

sudo bzip2 -kd fileinfo.bz2 
cat fileinfo
16877 root root /media
16877 bvandepo root /media/HD500GO
16893 bvandepo bvandepo /media/HD500GO/donnees
16893 bvandepo bvandepo /media/HD500GO/donnees/livres_et_BD
33204 bvandepo bvandepo /media/HD500GO/donnees/test.txt
33261 bvandepo bvandepo /media/HD500GO/donnees/mae_train.vhd
33188 bvandepo bvandepo /media/HD500GO/donnees/ghdl.info
sudo bzip2 -kd takesnapshot.log.bz2 
cat takesnapshot.log
========== Take snapshot (profile 1): Tue Oct 25 22:50:02 2016 ==========
 
[I] ...
[I] Comparaison avec la sauvegarde 2016-10-25 22:02:55
[I] rsync -rtDHh --checksum --links --no-p --no-g --no-o --info=progress2 --no-i-r  --delete --delete-excluded  -i --dry-run --out-format="BACKINTIME: %i %n%L" --chmod=Du+wx  --exclude="/media/bvandepo/HD3TO14/savebackintime" --exclude="/home/bvandepo/.local/share/backintime" --exclude=".local/share/backintime/mnt" --include="/media/HD500GO/donnees/" --include="/media/HD500GO/" --include="/media/" --exclude=".gvfs" --exclude=".cache/*" --exclude=".thumbnails*" --exclude="[Tt]rash*" --exclude="*.backup*" --exclude="*~" --exclude=".dropbox*" --exclude="/proc/*" --exclude="/sys/*" --exclude="/dev/*" --exclude="/run/*" --exclude="/etc/mtab" --exclude="/var/cache/apt/archives/*.deb" --exclude="lost+found/*" --exclude="/tmp/*" --exclude="/var/tmp/*" --exclude="/var/backups/*" --exclude=".Private" --include="/media/HD500GO/donnees/**" --exclude="*" / "/media/bvandepo/HD3TO14/savebackintime/backintime/rapid/bvandepo/1/20161025-220255-424/backup/"
[C] >f+++++++++ media/HD500GO/donnees/test.txt
[I] Création des liens physiques
[I] cp -aRl "/media/bvandepo/HD3TO14/savebackintime/backintime/rapid/bvandepo/1/20161025-220255-424/backup/"* "/media/bvandepo/HD3TO14/savebackintime/backintime/rapid/bvandepo/1/new_snapshot/backup/"
[I] returns: 0
[I] Sauvegarder
[I] rsync -rtDHh --checksum --links --no-p --no-g --no-o --info=progress2 --no-i-r  --delete --delete-excluded  -v  --chmod=Du+wx  --exclude="/media/bvandepo/HD3TO14/savebackintime" --exclude="/home/bvandepo/.local/share/backintime" --exclude=".local/share/backintime/mnt" --include="/media/HD500GO/donnees/" --include="/media/HD500GO/" --include="/media/" --exclude=".gvfs" --exclude=".cache/*" --exclude=".thumbnails*" --exclude="[Tt]rash*" --exclude="*.backup*" --exclude="*~" --exclude=".dropbox*" --exclude="/proc/*" --exclude="/sys/*" --exclude="/dev/*" --exclude="/run/*" --exclude="/etc/mtab" --exclude="/var/cache/apt/archives/*.deb" --exclude="lost+found/*" --exclude="/tmp/*" --exclude="/var/tmp/*" --exclude="/var/backups/*" --exclude=".Private" --include="/media/HD500GO/donnees/**" --exclude="*" / "/media/bvandepo/HD3TO14/savebackintime/backintime/rapid/bvandepo/1/new_snapshot/backup/"
[I] Sauvegarder (rsync: building file list ... done)
[I] Sauvegarder (rsync: ./)
[I] Sauvegarder (rsync: media/HD500GO/donnees/)
[I] Sauvegarder (rsync: media/HD500GO/donnees/test.txt)
[I] Sauvegarder (rsync: sent 814 bytes  received 41 bytes  244.29 bytes/sec)
[I] Sauvegarder (rsync: total size is 629.15M  speedup is 735,843.33)
[I] Sauvegarde du fichier de configuration...
[I] Sauvegarde des permissions...

Observer les différences entre 2 sauvegardes

cd /media/bvandepo/HD3TO14/savebackintime/backintime/rapid/bvandepo/1
kdiff3 20161026-001514-889/ 20161026-003204-159/

Double-cliquer sur le nom du fichier marqué en rouge pour voir les différences de versions.

Autres logiciels pour comparer: http://askubuntu.com/questions/12473/file-and-directory-comparison-tool

sauvegarde.1477437876.txt.gz · Dernière modification : 2016/10/26 01:24 de bvandepo