Le processus simple et de séléctionner les sources (fichier ou répertoire) à collecter dans un fichier texte, un élément par ligne.
Il est fourni ensuite à tar
comme liste de fichiers à sauvegarder dans un tarball.
Il est conseillé de diviser en plusieurs tarballs les types de fichiers comme sauvegarder à part les configs et les documents, de sorte à ne pas avoir un unique tarball géant à ouvrir pour récupérer un simple fichier de configuration.
Avec un navigateur de fichiers comme Dolphin, on peut simplement séléctionner les fichiers et répertoires, faire Édition > Copier
et leur chemin complet sera mis dans le "presse papier". Le navigateur ne traîte pas la copie de fichiers directement, il n'y a pas de risques d'obstruction de la mémoire.
On peut ensuite coller cette liste dans un fichier texte et l'on aura une simple liste de fichiers et répertoires pour alimenter tar
.
À noter que la liste des fichiers est préfixé par le nom de protocole utilisé pour accéder aux fichiers, tel que file://
pour un fichier local, ftp://
pour un fichier sur un serveur FTP, etc.. Retirez le et n'essayez pas de copier autre chose qu'un fichier local, tar
ne pourra probablement pas le traiter.
Partant du principe qu'un fichier files.txt
a été créé avec le contenu suivant (selon la méthode de Séléction des fichiers précédemment décrite): :
/home/goldorak/pngquant/Screenshot_20180123_150045.png
/home/goldorak/pngquant/Screenshot_20180123_162825.png
/home/goldorak/Sveetoy-sass-0.8.0.zip
Avant de continuer il est fortement recommandé de fermer toute les applications utilisant les sources listés dans le fichier sinon vous risquez des pertes, un échec du processus ou même bloquer tar
de façon muette et infinie dans certains cas (selon le mode d'ouverture du fichier).
On peut alors procéder à la sauvegarde de la manière suivante: :
tar -cvzf mybackup.tar.gz --dereference --hard-dereference --files-from=files.txt
L'option cvzf
créé un tarball compressé avec gunzip en mode verbeux. tar
parcours de façon récursive les répertoires qui lui sont indiqués.
Les options --dereference
et --hard-dereference
forcent la copie de la cible de liens symboliques ou hard.
Les chemins absolus seront convertis en chemin relatif au tarball de sorte à ce que décompresser l'archive ne risque pas d'écraser les chemins absolus ciblés et les crééront depuis l'emplacement courant.
Ajouter l'option --absolute-names
à la commande de sauvegarde si vous souhaitez conserver le chemin absolu complet.
Les lignes du fichier des sources qui commenceront par un -
seront considérés comme des options pour tar
. Si vous avez des chemins commencant par -
, ajouter l'option --verbatim-files-from
pour vous assurer qu'ils seront bien considérer comme des fichiers et ne perturberont pas le processus de sauvegarde.
Si éventuellement votre de séléction de sources est "trop large" vous pouvez exclure des fichiers avec l'option --exclude=PATTERN
, consultez l'aide de tar
pour plus de détails sur les motifs d'exclusions possibles.
La restauration consiste juste à ouvrir l'archive: :
tar -xvzf mybackup.tar.gz
Tout les fichiers seront créés à partir de l'emplacement courant. L'arborescence récursive des fichiers et répertoires sauvegardés est restaurée intégralement mais depuis l'emplacement courant.
Rsync est un outil de synchronisation qui peut servir pour sauvegarder mais un tarball est utilisable plus aisément et depuis un système linux basique.
En outre il ne compresse rien, son utilisation demande plus d'espace disque.
Par contre Rsync peut être plus rapide car après la première synchronisation il ne retraite pas l'intégralité des fichiers, seulement ceux supprimés ou nouvellement créés.
Rsync est un outil à utiliser périodiquement, tar est un outil à utiliser de façon ponctuel.
Pour éviter des déconvenues il peut être utile de valider que les chemins contenu dans un fichier de listing à utiliser pour une sauvegarde, n'a pas de chemins invalides.
Un simple script Python est fourni avec ce document pour valider ces fichiers de listing.