bup-restore - extraire des fichiers d'un jeu de sauvegarde
bup restore [-r host:[path]] [--outdir=outdir] [--exclude-rx pattern] [--exclude-rx-from filename] [-v] [-q] <paths...>
bup restore extrait les fichiers d'un jeu de sauvegarde (créé avec bup-save(1)) vers le système de fichiers local.
Les chemins spécifiés sont de la forme /branche/révision/quelque/où. Les composants du chemin sont les suivants :
le nom du jeu de sauvegarde à partir duquel effectuer la restauration ; cela correspond à l'option --name (-n) de bup save.
la révision du jeu de sauvegarde à restaurer. La révision dernière est toujours la sauvegarde la plus récente sur la branche donnée. Vous pouvez découvrir d'autres révisions en utilisant bup ls /branch.
le chemin précédemment enregistré (après tout décapage/greffage) que vous souhaitez restaurer. Par exemple, etc/passwd.
Si some/where nomme un répertoire, bup restore restaurera ce répertoire puis restaurera récursivement son contenu.
Si some/where nomme un répertoire et se termine par une barre oblique (c'est-à-dire path/to/dir/), bup restore restaurera les enfants de ce répertoire directement dans le répertoire courant (ou le --outdir ). Si some/where ne se termine pas par une barre oblique, les enfants seront restaurés dans un sous-répertoire du répertoire courant.
Si some/where nomme un répertoire et se termine par `/.' (ie. path/to/dir/.), bup restore fera exactement ce qu'il aurait fait pour path/to/dir, puis restaurera les métadonnées de dir dans le répertoire courant (ou le --outdir). Voir la section EXEMPLES.
Comme cas particulier, si some/where nomme le "dernier" lien symbolique, par ex. bup restore /foo/latest, alors bup agira exactement comme si la sauvegarde vers laquelle pointe « la plus récente » avait été spécifiée, et la restaurera, plutôt que le lien symbolique « la plus récente » lui-même.
Chaque fois que des métadonnées de chemin sont disponibles, bup restore tentera de les restaurer. Lors de la restauration de la propriété, bup implémente une sémantique de type tar/rsync. Il préférera normalement les noms d'utilisateur et de groupe aux uid et gid lorsqu'ils sont disponibles, mais il n'essaiera pas de restaurer l'utilisateur à moins qu'il ne s'exécute en tant que root, et il reviendra à l'uid ou au gid numérique chaque fois que les métadonnées contiennent un utilisateur ou nom de groupe qui n'existe pas sur le système actuel. L'utilisation des noms d'utilisateurs et de groupes peut être désactivée via --numeric-ids (ce qui peut être important lors de la restauration d'un chroot, par exemple), et comme cas particulier, un uid ou gid de 0 ne sera jamais remappé par nom. De plus, certains systèmes ne permettent pas de définir un uid/gid qui ne correspond pas à un utilisateur/groupe connu. Sur ces systèmes, bup enregistrera une erreur pour chaque chemin pertinent.
Les options --map-user, --map-group, --map-uid, --map-gid peuvent être utilisées pour ajuster les informations de propriété disponibles avant que l'une des règles ci-dessus ne soit appliquée, mais notez qu'en raison de ces règles , --map-uid et --map-gid n'auront aucun effet chaque fois qu'un chemin a un utilisateur ou un groupe valide. Dans ces cas, soit --numeric-ids doit être spécifié, soit l'utilisateur ou le groupe doit être effacé par un --map-user foo= ou --map-group foo= approprié.
Les liens physiques seront également restaurés lorsque cela sera possible, mais au moins actuellement, aucun lien ne sera établi vers des cibles en dehors de l'arborescence de restauration, et si l'arborescence de restauration couvre une disposition différente des systèmes de fichiers de l'arborescence de sauvegarde, certains ensembles de liens physiques peuvent ne pas être complètement restaurés.
Notez également que la modification des ensembles de liens physiques sur le disque entre l'index et l'enregistrement peut produire des résultats inattendus. Avec l'implémentation actuelle, bup tentera de recréer n'importe quel ensemble de liens physiques donné tel qu'il existait au moment de l'indexation, même si tous les fichiers de l'ensemble n'étaient pas encore liés (mais étaient par ailleurs identiques) au moment de la sauvegarde.
Notez que pendant le processus de restauration, l'accès aux données dans l'arborescence de restauration peut être plus permissif qu'il ne l'était dans la source d'origine. À moins que la sécurité ne soit pas pertinente, vous devez restaurer dans un sous-répertoire privé, puis déplacer l'arborescence résultante vers sa position finale. Voir la section EXEMPLES pour une démonstration.
restaurer le jeu de sauvegarde à partir du serveur distant donné. Si path est omis, utilise le chemin par défaut sur le serveur distant (vous devez toujours inclure le `:'). La connexion au serveur distant se fait en SSH. Si vous souhaitez spécifier le port, l'utilisateur ou la clé privée à utiliser pour la connexion SSH, nous vous recommandons d'utiliser le fichier ~/.ssh/config.
créez et accédez au répertoire outdir avant d'extraire les fichiers.
restaurer des identifiants numériques (utilisateur, groupe, etc.) plutôt que des noms.
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 enraciné au sommet de l'arborescence de restauration, 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 spécifié plusieurs fois)
Notez que la racine de l'arborescence de restauration (qui correspond à `^/') est le sommet de l'arborescence d'archives en cours de restauration et n'a rien à voir avec la destination du système de fichiers. Étant donné "restore ... /foo/latest/etc/", le modèle `^/passwd$' correspondrait si un fichier nommé passwd avait été enregistré sous `/foo/latest/etc/passwd'.
Exemples:
exclure tout fichier nommé foo
exclure tout répertoire nommé foo
exclure le contenu de tout répertoire nommé foo
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.
écrire les données de sortie avec parcimonie lorsque cela est raisonnable. Actuellement, raisonnable signifie simplement "au moins chaque fois qu'il y a 512 zéros consécutifs ou plus".
pour chaque chemin, restaurez l'ancien nom d'utilisateur (enregistré) en tant que nouveau. Spécifier " " pour nouveau effacera l'utilisateur. Par exemple, « –map-user foo= » permettra à l'uid de prendre effet pour tout chemin qui avait à l'origine un utilisateur de « foo », à moins qu'il ne soit annulé par une spécification ultérieure « –map-user foo=... ». Voir DESCRIPTION ci-dessus pour plus d'informations.
pour chaque chemin, restaurez l'ancien nom de groupe (sauvegardé) en tant que nouveau. Spécifier " " pour nouveau effacera le groupe. Par exemple, « –map-group foo= » permettra au gid de prendre effet pour tout chemin qui avait à l'origine un groupe de « foo », à moins qu'il ne soit annulé par une spécification ultérieure « –map-group foo=... ». Voir DESCRIPTION ci-dessus pour plus d'informations.
pour chaque chemin, restaurez l'ancien (sauvegardé) uid en tant que nouveau, à moins qu'il ne soit annulé par un "–map-uid ancien=... " option. Notez que l'uid ne sera pertinent que pour les chemins sans utilisateur. Voir DESCRIPTION ci-dessus pour plus d'informations.
pour chaque chemin, restaurez l'ancien (sauvegardé) gid en tant que nouveau, à moins qu'il ne soit annulé par un "–map-gid ancien=... " option. Notez que le gid ne sera pertinent que pour les chemins sans utilisateur. Voir DESCRIPTION ci-dessus pour plus d'informations.
augmenter la sortie du journal. Donné une fois, imprime chaque répertoire au fur et à mesure qu'il est restauré ; donné deux fois, imprime chaque fichier et répertoire.
supprimer la sortie, y compris la jauge de progression. Normalement, si stderr est un tty, un indicateur de progression affiche le nombre total de fichiers restaurés.
Créez un jeu de sauvegarde de test simple :
$ bup index -u /etc
$ bup save -n mybackup /etc/passwd /etc/profileRestaurer un seul fichier :
$ bup restore /mybackup/latest/etc/passwd
Restoring: 1, done.
$ ls -l passwd
-rw-r--r-- 1 apenwarr apenwarr 1478 2010-09-08 03:06 passwdRestaurer etc pour tester (pas de barre oblique finale):
$ bup restore -C test /mybackup/latest/etc
Restoring: 3, done.
$ find test
test
test/etc
test/etc/passwd
test/etc/profileRestaurer le contenu de etc à tester (barre oblique finale) :
$ bup restore -C test /mybackup/latest/etc/
Restoring: 2, done.
$ find test
test
test/passwd
test/profileRestaurez le contenu d'etc et les métadonnées d'etc à tester ("/. ") :
$ bup restore -C test /mybackup/latest/etc/.
Restoring: 2, done.
# At this point test and etc's metadata will match.
$ find test
test
test/passwd
test/profileRestaurer un arbre sans risque d'accès non autorisé :
# mkdir --mode 0700 restore-tmp
# bup restore -C restore-tmp /somebackup/latest/foo
Restoring: 42, done.
# mv restore-tmp/foo somewhere
# rmdir restore-tmpRestaurer une arborescence, en remappant un ancien utilisateur et groupe vers un nouvel utilisateur et groupe :
# ls -l /original/y
-rw-r----- 1 foo baz 3610 Nov 4 11:31 y
# bup restore -C dest --map-user foo=bar --map-group baz=bax /x/latest/y
Restoring: 42, done.
# ls -l dest/y
-rw-r----- 1 bar bax 3610 Nov 4 11:31 yRestaurez un arbre en remappant un ancien uid vers un nouvel uid. Notez que l'ancien utilisateur doit être effacé pour que bup ne le préfère pas à l'uid :
# ls -l /original/y
-rw-r----- 1 foo baz 3610 Nov 4 11:31 y
# ls -ln /original/y
-rw-r----- 1 1000 1007 3610 Nov 4 11:31 y
# bup restore -C dest --map-user foo= --map-uid 1000=1042 /x/latest/y
Restoring: 97, done.
# ls -ln dest/y
-rw-r----- 1 1042 1007 3610 Nov 4 11:31 yUne autre façon de faire la même chose en annulant les utilisateurs/groupes universellement avec --numeric-ids :
# bup restore -C dest --numeric-ids --map-uid 1000=1042 /x/latest/y
Restoring: 97, done.bup-save(1), bup-ftp(1), bup-fuse(1), bup-web(1)
Fait partie de la suite bup(1).
Avery Pennarun apenwarr@gmail.com.