bup-index - imprimer et/ou mettre à jour l'index du système de fichiers bup
bup index <-p|-m|-s|-u|--clear|--check> [-H] [-l] [-x] [--fake-valid] [--no-check-device] [--fake-invalid] [-f indexfile] [--exclude path] [--exclude-from filename] [--exclude-rx pattern] [--exclude-rx-from filename] [-v] <paths...>
bup index manipule l'index du système de fichiers, qui est un cache des chemins absolus et de leurs métadonnées (attributs, hachages SHA-1, etc.). L'index bup a une fonction similaire à l'index git(1) et l'index par défaut se trouve dans $BUP_DIR/bupindex.
La création d'une sauvegarde dans bup consiste en deux étapes : mettre à jour l'index avec bup index, puis sauvegarder les fichiers (ou un sous-ensemble de fichiers) avec bup save. La séparation existe pour ces raisons :
Il existe plusieurs façons de générer une liste de fichiers qui doivent être sauvegardés. Par exemple, vous pouvez utiliser inotify(7) ou dnotify(7).
Même si vous sauvegardez des fichiers vers plusieurs destinations (pour plus de redondance), les noms de fichiers, les attributs et les hachages seront les mêmes à chaque fois. Ainsi, vous pouvez éviter d'avoir à générer à plusieurs reprises la liste des fichiers pour chaque jeu de sauvegarde.
Vous souhaiterez peut-être utiliser les données suivies par bup index à d'autres fins (telles que l'accélération d'autres programmes nécessitant les mêmes informations).
Pour le moment, bup ignorera les attributs Linux (cf. chattr(1) et lsattr(1)) sur certains systèmes (tous les systèmes big-endian où sizeof(long) < sizeof(int)). C'est parce que le noyau Linux et FUSE sont actuellement en désaccord sur le type des arguments d'appel système attr, et donc sur les systèmes big-endian, il n'y a aucun moyen d'obtenir les résultats sans risque de corruption de la pile (http://lwn.net/Articles /575846/). Dans ces situations, bup affichera un avertissement la première fois que les attributs Linux sont pertinents lors de toute opération d'indexation/sauvegarde/restauration.
bup s'adapte à la résolution d'horodatage du système de fichiers « dans le pire des cas » attendue - actuellement une seconde ; les exemples incluent VFAT, ext2, ext3, petit ext4, etc. Comme bup ne peut pas connaître la résolution de l'horodatage du système de fichiers et peut traverser plusieurs systèmes de fichiers au cours d'une exécution donnée, il suppose toujours que la résolution ne peut pas être supérieure à une seconde.
En pratique, cela signifie que les mises à jour d'index sont un peu imprécises, et donc bup save peut parfois enregistrer des changements de système de fichiers auxquels vous ne vous attendiez pas. En effet, lors d'une mise à jour d'index, si bup rencontre un chemin dont les horodatages réels sont plus récents qu'une seconde avant le début de la mise à jour, bup définira les horodatages d'index pour ce chemin (mtime et ctime) exactement une seconde avant l'exécution, – plafonnement efficace de ces valeurs.
Cela garantit qu'aucune modification ultérieure de ces chemins ne peut entraîner des horodatages identiques à ceux de l'index. Si cela était possible, bup pourrait ignorer les modifications.
Vous pouvez voir l'effet de ce comportement dans cet exemple (en supposant que moins d'une seconde s'écoule entre la création initiale du fichier et la première exécution de l'index) :
$ touch src/1 src/2
# A "sleep 1" here would avoid the unexpected save.
$ bup index src
$ bup save -n src src # Saves 1 and 2.
$ date > src/1
$ bup index src
$ date > src/2 # Not indexed.
$ bup save -n src src # But src/2 is saved anyway.À proprement parler, bup ne devrait pas remarquer le passage à src/2, mais il le fait, en raison des aménagements décrits ci-dessus.
mettre à jour récursivement l'index pour les chemins donnés et leurs descendants. Un ou plusieurs chemins doivent être spécifiés, et si un chemin se termine par un lien symbolique, le lien lui-même sera indexé, pas la cible. Si aucune option de mode n'est donnée, --update est la valeur par défaut et les chemins peuvent être exclus par les options --exclude, --exclude-rx et --one-file-system.
imprimer le contenu de l'index. Si des chemins sont donnés, affiche les entrées données et leurs descendants. Si aucun chemin n'est indiqué, affiche les entrées commençant par le répertoire de travail actuel (.).
imprime uniquement les fichiers marqués comme modifiés (c'est-à-dire modifiés depuis la sauvegarde la plus récente) dans l'index. Implique -p.
ajoutez un code d'état (A, M, D ou espace) avant chaque chemin. Implique -p. Les codes signifient, respectivement, qu'un fichier est marqué dans l'index comme ajouté, modifié, supprimé ou inchangé depuis la dernière sauvegarde.
vérifiez soigneusement l'intégrité du fichier d'index avant et après la mise à jour. Principalement utile pour les tests automatisés.
effacer l'index par défaut.
pour chaque fichier imprimé, ajoutez le dernier code de hachage enregistré. Le code de hachage est normalement généré par bup save. Pour les objets qui n'ont pas encore été sauvegardés, le code de hachage sera 00000000000000000000000000000000000000. Notez que le code de hachage est imprimé même si le fichier est connu pour être modifié ou supprimé dans l'index (c'est-à-dire que le fichier sur le système de fichiers ne correspond plus au hachage enregistré). Si cela vous pose problème, utilisez --status.
affiche plus d'informations sur chaque fichier, dans un format similaire à l'option -l de ls(1).
ne traversez pas les limites du système de fichiers lors de la traversée du système de fichiers - bien que, comme avec tar et rsync, les points de montage eux-mêmes seront toujours indexés. Applicable uniquement si vous utilisez -u.
marquer les chemins spécifiés comme étant à jour même s'ils ne le sont pas. Cela peut être utile pour les tests ou pour éviter de sauvegarder inutilement des fichiers que vous savez ennuyeux.
marquer les chemins spécifiés comme non à jour, forçant la prochaine exécution « bup save » à revérifier leur contenu.
utilisez un nom de fichier d'index différent au lieu de $BUP_DIR/bupindex.
exclure chemin de la sauvegarde (peut être répété).
lire –exclure les chemins de nom de fichier, un chemin par ligne (peut être répété). Ignorer les lignes complètement vides.
exclure tout chemin correspondant à motif, qui doit être une expression régulière Python (http://docs.python.org/library/re.html). Le modèle sera comparé au chemin complet, sans ancrage, donc « x/y » correspondra à « ox/yard » ou « box/yards ». Pour exclure le contenu de /tmp, mais pas le répertoire lui-même, utilisez « ^/tmp/. ”. (peut être répété)
Exemples:
`/foo$' - exclut tout fichier nommé foo
`/foo/$' - exclut tout répertoire nommé foo
`/truc/.' - exclure le contenu de tout répertoire nommé foo
`^/tmp/.' - exclure le contenu de /tmp au niveau racine, mais pas /tmp lui-même
lire les modèles –exclude-rx de nom de fichier, un modèle par ligne (peut être répété). Ignorer les lignes complètement vides.
ne marquez pas une entrée invalide si le numéro de périphérique (stat(2) st_dev) change. Cela peut être utile lors de l'indexation de systèmes de fichiers distants, montés automatiquement ou instantanés (LVM, Btrfs, etc.), où le numéro de périphérique n'est pas fixe.
augmenter la sortie du journal pendant la mise à jour (peut être utilisé plusieurs fois). Avec un -v, affiche chaque répertoire au fur et à mesure de sa mise à jour ; avec deux -v, imprime également chaque fichier.
bup index -vux /etc /var /usrbup-save(1), bup-drecurse(1), bup-on(1)
Fait partie de la suite bup(1).
Avery Pennarun apenwarr@gmail.com.