Restic: Exclure les modèles non appliqués

Créé le 20 juin 2017  ·  4Commentaires  ·  Source: restic/restic

Sortie de restic version

restic 0.6.1 (v0.6.1-126-gb0fb95df)
compilé avec go1.8.3 sur darwin / amd64

Comment avez-vous commencé le restic exactement? (Incluez la ligne de commande complète)

restic backup --exclude-file ~/exclude.txt ~

Quel backend / serveur / service avez-vous utilisé?

sftp vers LAN

Comportement prévisible

Ignorer les fichiers correspondant au modèle dans exclude.txt

Comportement réel

Les fichiers ont été inclus à moins que j'aie radicalement desserré le modèle au point où le modèle est trop ambigu.

Étapes pour reproduire le comportement

En utilisant un fichier d'exclusion comme celui-ci:

.[^.]*
/matt/Applications
/matt/Dropbox
/matt/Downloads
/matt/VirtualBox VMs
*.vmdk

Mon objectif est de sauter les fichiers dotfiles et quelques dossiers spécifiques dans mon répertoire $ HOME (nommé matt ) (mais pas tous les dossiers nommés "Applications" par exemple). Oh, et tous les fichiers .vmdk (ils peuvent être énormes!)

Quand j'ai assoupli les motifs à ceci:

.[^.]*
Applications
Dropbox
Downloads
VirtualBox VMs
*.vmdk

cela a fonctionné (ce qui signifie qu'il a sauté les dossiers) mais c'est trop ambigu, car je ne veux pas ignorer tous les dossiers nommés Téléchargements, par exemple.

Avez-vous une idée de ce qui a pu causer cela?

Probablement je ne comprends toujours pas correctement les modèles d'exclusion. : smile: J'ai lu # 1005 et je suppose que je ne sais pas si des chemins absolus sont requis pour --exclude ou si des chemins repo-absolus sont requis comme avec --include.

documentation bug

Commentaire le plus utile

Soupir, oui, vous avez absolument raison. Les modèles d'exclusion sont absolus en ce qui concerne ce que vous sauvegardez:
Le modèle /home/matt/*.go correspond à tous les fichiers Go de votre maison lorsque vous exécutez restic backup /home/matt . En raison du fonctionnement de l'archiveur (voir # 549, mauvaise décision de conception que nous devons corriger), le préfixe /home/ est supprimé et le composant de chemin de niveau supérieur dans l'instantané est /matt . Donc, pour la restauration, vous devez utiliser un modèle d'inclusion de /matt/*.go pour faire correspondre les mêmes fichiers. Je sais que c'est mauvais, je vais éventuellement le corriger :)

Voici donc la liste des fichiers d'exclusion corrigée pour votre cas d'utilisation:

.[^.]*
/home/matt/Applications
/home/matt/Dropbox
/home/matt/Downloads
/home/matt/VirtualBox VMs
*.vmdk

Tous les 4 commentaires

Mise à jour: OK, remplacer /matt/ par $HOME/ semble fonctionner, même si je trouve que l'incohérence entre --exclude et --include est un peu étrange / surprenante.

Habituellement $HOME/blabla est /home/matt/blabla ou avez-vous changé quelque chose sur votre système?

Soupir, oui, vous avez absolument raison. Les modèles d'exclusion sont absolus en ce qui concerne ce que vous sauvegardez:
Le modèle /home/matt/*.go correspond à tous les fichiers Go de votre maison lorsque vous exécutez restic backup /home/matt . En raison du fonctionnement de l'archiveur (voir # 549, mauvaise décision de conception que nous devons corriger), le préfixe /home/ est supprimé et le composant de chemin de niveau supérieur dans l'instantané est /matt . Donc, pour la restauration, vous devez utiliser un modèle d'inclusion de /matt/*.go pour faire correspondre les mêmes fichiers. Je sais que c'est mauvais, je vais éventuellement le corriger :)

Voici donc la liste des fichiers d'exclusion corrigée pour votre cas d'utilisation:

.[^.]*
/home/matt/Applications
/home/matt/Dropbox
/home/matt/Downloads
/home/matt/VirtualBox VMs
*.vmdk

@ibib Sur mon Mac, mon répertoire personnel est /Users/matt , mais comme --include utilise un chemin absolu du référentiel (comme restic ls montre), j'ai pensé que le chemin absolu approprié serait /matt/... .

@ fd0 Ah! Cela a plus de sens, merci pour l'explication. Donc --exclude lorsqu'il est utilisé avec restic backup est absolu pour le système de fichiers, et --include (utilisé avec restic restore ) est absolu pour le référentiel. En d'autres termes, les modèles sont absolus par rapport à l'origine des fichiers.

Merci beaucoup pour l'explication. Maintenant, je comprends mieux pourquoi 549 est un problème que vous souhaitez résoudre. :le sourire:

Cette page vous a été utile?
0 / 5 - 0 notes