Sauvegardez votre répertoire personnel avec rsync et ignorez les dossiers inutiles

24

Vous pouvez facilement sauvegarder votre dossier personnel sur un disque dur externe avec

rsync -a --exclude=.cache --progress /home/$USER /media/linuxbackup/home/$USER

J'ai exclu le dossier .cache car je pense que je n'en aurai jamais besoin lorsque je devrai réinstaller à partir de cette sauvegarde.

J'ai trouvé cette liste de tous les dossiers que je pouvais exclure dans une sauvegarde normale ici:
Quels fichiers et répertoires peuvent être exclus d'une sauvegarde du répertoire personnel?

J'ai créé une liste de cette réponse qui contient quelques commentaires sous cette forme:

#These directories may be excluded:

.gvfs                           # contains mounted file systems?
.local/share/gvfs-metadata
.Private                        # contains the actual encrypted home directory
.dbus                           # session-specific
.cache
.Trash                          # do I need to say more?
.local/share/Trash
.cddb                           # cached info about audio CDs
.aptitude                       # cached packages lists

#Flash-specific:

.adobe                          # Cache for flash, maybe others?
.macromedia   # except for Flash persistence, there is no reason to keep this

#Files:

.xsession-errors            # contains errors from the current graphical session
.recently-used              # recently used files
.recently-used.xbel
.thumbnails

Voici la liste complète sur gist

Comment puis-je ajouter cette liste à ma commande rsync?

rubo77
la source
1
en plus .Trash, il y en a souvent aussi .Trash-1000(sous Ubuntu-MATE 14 actuel au moins), alors mieux vaut se contenter de .Trash-*?
Frank Nocke

Réponses:

40

La liste d'exclusion ne peut contenir que des noms de fichiers, des noms de dossiers et des lignes commençant par #. Un commentaire derrière le nom de dossier n'est pas autorisé. J'ai créé un référentiel Git avec tous les fichiers et dossiers connus qui sont superflus:

Téléchargez cette ignorelist dans / var / tmp / ignorelist

wget https://raw.githubusercontent.com/rubo77/rsync-homedir-excludes/master/rsync-homedir-excludes.txt -O /var/tmp/ignorelist

Ensuite, démarrez le rsync avec

rsync -aP --exclude-from=/var/tmp/ignorelist /home/$USER/ /media/$USER/linuxbackup/home/

Remarque:
Dans l'ignorelist, il y a une section au début avec des dossiers, qui sont des répertoires, qui ne valent probablement pas une sauvegarde.

rubo77
la source
2
Vous pouvez combiner les deux commandes, car vous rsyncpouvez lire à partir de stdin:wget https://... -O - | rsync -a --progress --exclude-from=- ...
muru
8
bon point, mais je pense qu'il est recommandé de regarder d'abord l'ignorelist avant de démarrer le rsync
rubo77
node_modulesn'est étonnamment pas sur la liste
jchook
ne voulez-vous pas conserver node_modulescertains de vos répertoires de configuration? Imaginez, vous souhaitez déplacer votre répertoire personnel vers un nouvel ordinateur, vous devez alors les conserver.
rubo77
4

De man rsync:

 --exclude-from=FILE     read exclude patterns from FILE
          This option is related to the --exclude option, but it specifies
          a FILE that contains exclude patterns  (one  per  line).   Blank
          lines  in  the  file  and  lines  starting  with  ’;’ or ’#’ are
          ignored.  If FILE is -, the list  will  be  read  from  standard
          input.
muru
la source
Il y a une telle liste, j'ai édité ma question
rubo77
@ rubo77 Je maintiens ma déclaration selon laquelle il n'y a pas de liste de tous les dossiers que vous pouvez exclure. C'est une recommandation, et je doute que même Lekenstyn dirait que c'est une liste complète.
muru
La liste ne doit pas être complète, je voudrais juste créer ma sauvegarde plus rapidement, alors sautez les dossiers inutiles évidents
rubo77
@ rubo77 Je pense que vous devrez déplacer les commentaires sur différentes lignes.
muru
thx, j'ai mis à jour le fichier gist pour que les commentaires soient sur des lignes simples
rubo77
0

Pourrait essayer ceci si les répertoires et les fichiers à l'intérieur sont tout ce que vous voulez sauvegarder. Exclut tous les répertoires cachés.

rsync -aP --exclude=.* /home/$USER/ /media/$USER/folder

arth
la source
Pouvez-vous être plus précis "devis manquant"?
Arth
Oh, désolé - j'étais laconique et je l'ai gâché par une faute de frappe: "quotest" au lieu de "quotes" manquant.
Volker Siegel
La coquille pourrait agrandir le *(peut-être pas à cet endroit?). Les chemins doivent être entre guillemets - le nom d'utilisateur ne peut pas contenir d'espace, mais /media/pourrait l'être /Old Media/ou non ...
Volker Siegel
Je m'excuse, je ne comprends pas. Le '. *' Ne doit pas inclure de '.' modèle qui sont des répertoires cachés dans le répertoire de base '/ home / $ USER /' vers la destination de sauvegarde: disque dur externe ou clé USB '/ media / $ USER / dossier'. Ce faisant, seuls les répertoires et fichiers réels sont en cours de sauvegarde. Si vous pointez autre chose, veuillez préciser.
Arth
4
Il n'est pas vraiment judicieux d'exclure tous les répertoires commençant par un point, par exemple le répertoire .thunderbird est l'un des répertoires les plus importants
rubo77