bup-restore - извлечь файлы из набора резервных копий
bup restore [-r host:[path]] [--outdir=outdir] [--exclude-rx pattern] [--exclude-rx-from filename] [-v] [-q] <paths...>
bup restore извлекает файлы из набора резервных копий (созданного с помощью bup-save(1)) в локальную файловую систему.
Указанные пути имеют вид /ветка/редакция/какое-то/где. Компоненты пути следующие:
имя набора резервных копий для восстановления; это соответствует опции --name (-n) для сохранения.
ревизия набора резервных копий для восстановления. Ревизия последняя всегда является самой последней резервной копией в данной ветке. Вы можете найти другие версии, используя команду bup ls /branch.
ранее сохраненный путь (после любой зачистки/прививки), который вы хотите восстановить. Например, etc/passwd.
Если some/where называет каталог, bup restore восстановит этот каталог, а затем рекурсивно восстановит его содержимое.
Если some/where называет каталог и заканчивается косой чертой (т. е. путь/к/каталогу/), bup restore восстановит дочерние элементы этого каталога непосредственно в текущий каталог (или --outdir ). Если some/where не заканчивается косой чертой, дочерние элементы будут восстановлены в подкаталог текущего каталога.
Если some/where называет каталог и заканчивается на `/.' (т. е. путь/к/каталогу/.), bup restore сделает то же самое, что и для пути/к/каталогу, а затем восстановит метаданные каталога в текущий каталог (или --outdir). См. раздел ПРИМЕРЫ.
В качестве особого случая, если some/where называет «последнюю» символическую ссылку, например bup restore /foo/latest, тогда bup будет действовать точно так же, как если бы было указано сохранение, на которое указывает «latest», и восстановить его, а не саму «последнюю» символическую ссылку.
Всякий раз, когда доступны метаданные пути, bup restore попытается восстановить их. При восстановлении права собственности bup реализует семантику, подобную tar/rsync. Обычно он предпочитает имена пользователей и групп вместо uid и gid, когда они доступны, но не будет пытаться восстановить пользователя, если только он не запущен от имени пользователя root, и будет возвращаться к числовому uid или gid всякий раз, когда метаданные содержат пользователя или имя группы, которого нет в текущей системе. Использование имен пользователей и групп можно отключить с помощью --numeric-ids (что может быть важно, например, при восстановлении chroot), и, как особый случай, uid или gid со значением 0 никогда не будут переназначаться по имени. Кроме того, некоторые системы не позволяют устанавливать uid/gid, который не соответствует известному пользователю/группе. В этих системах bup регистрирует ошибку для каждого соответствующего пути.
Параметры --map-user, --map-group, --map-uid, --map-gid могут использоваться для настройки доступной информации о владельце до применения любого из приведенных выше правил, но обратите внимание, что из-за этих правил , --map-uid и --map-gid не будут иметь никакого эффекта, если путь содержит допустимого пользователя или группу. В таких случаях необходимо указать либо --numeric-ids, либо пользователь или группа должны быть очищены подходящим --map-user foo= или --map-group foo=.
Жесткие ссылки также будут восстанавливаться, когда это возможно, но, по крайней мере, в настоящее время не будут создаваться ссылки на цели за пределами дерева восстановления, и если дерево восстановления охватывает расположение файловых систем, отличное от дерева сохранения, некоторые наборы жестких ссылок могут быть восстановлены не полностью.
Также обратите внимание, что изменение наборов жестких ссылок на диске между индексированием и сохранением может привести к неожиданным результатам. В текущей реализации bup попытается воссоздать любой заданный набор жестких ссылок в том виде, в каком он существовал во время индексации, даже если все файлы в наборе не были все еще жестко связаны (но в остальном были идентичными) во время сохранения.
Обратите внимание, что в процессе восстановления доступ к данным в дереве восстановления может быть более разрешительным, чем в исходном источнике. Если безопасность не имеет значения, вы должны выполнить восстановление в частный подкаталог, а затем переместить полученное дерево в его конечное положение. См. раздел ПРИМЕРЫ для демонстрации.
восстановить набор резервных копий с заданного удаленного сервера. Если путь не указан, используется путь по умолчанию на удаленном сервере (вам все равно нужно включить `:'). Подключение к удаленному серверу осуществляется с помощью SSH. Если вы хотите указать, какой порт, пользователя или закрытый ключ использовать для SSH-соединения, мы рекомендуем вам использовать файл ~/.ssh/config.
создайте и перейдите в каталог outdir перед извлечением файлов.
восстановить числовые идентификаторы (пользователя, группы и т. д.), а не имена.
исключить любой путь, соответствующий шаблону, который должен быть регулярным выражением Python (http://docs.python.org/library/re.html). Шаблон будет сравниваться с полным путем, корнем которого является вершина дерева восстановления, без привязки, поэтому «x/y» будет соответствовать «ox/yard» или «box/yards». Чтобы исключить содержимое /tmp, но не сам каталог, используйте «^/tmp/. ». (можно указать более одного раза)
Обратите внимание, что корень дерева восстановления (который соответствует `^/') является вершиной восстанавливаемого дерева архива и не имеет ничего общего с назначением файловой системы. Учитывая «restore ... /foo/latest/etc/», шаблон `^/passwd$' будет соответствовать, если файл с именем passwd будет сохранен как `/foo/latest/etc/passwd'.
Примеры:
исключить любой файл с именем foo
исключить любой каталог с именем foo
исключить содержимое любого каталога с именем foo
исключить содержимое /tmp корневого уровня, но не сам /tmp
читать шаблоны –exclude-rx из имя файла, по одному шаблону в строке (может повторяться). Игнорировать полностью пустые строки.
записывать выходные данные разреженно, когда это разумно. В настоящее время разумный просто означает «по крайней мере, когда есть 512 или более последовательных нулей».
для каждого пути восстановить старое (сохраненное) имя пользователя как новое. Указание « » для new приведет к удалению пользователя. Например, «–map-user foo=» позволит uid вступить в силу для любого пути, который первоначально имел пользователя «foo», если это не противоречит последующей спецификации «–map-user foo=...». См. ОПИСАНИЕ выше для получения дополнительной информации.
для каждого пути восстановить старое (сохраненное) имя группы как новое. Если указать « » для new, группа будет очищена. Например, «–map-group foo= » позволит gid вступить в силу для любого пути, который изначально имел группу «foo », если это не противоречит последующей спецификации «–map-group foo=... ». См. ОПИСАНИЕ выше для получения дополнительной информации.
для каждого пути восстанавливать старый (сохраненный) uid как новый, если это не отменено последующим «-map-uid old=... " вариант. Обратите внимание, что uid будет иметь значение только для путей без пользователя. См. ОПИСАНИЕ выше для получения дополнительной информации.
для каждого пути восстанавливать старый (сохраненный) gid как новый, если это не отменено последующим «-map-gid old=... " вариант. Обратите внимание, что gid будет актуален только для путей без пользователя. См. ОПИСАНИЕ выше для получения дополнительной информации.
увеличить вывод журнала. Дан один раз, печатает каждый каталог по мере его восстановления; указанный дважды, печатает каждый файл и каталог.
подавлять вывод, включая индикатор выполнения. Обычно, если stderr является tty, индикатор выполнения отображает общее количество восстановленных файлов.
Создайте простой тестовый набор резервных копий:
$ bup index -u /etc
$ bup save -n mybackup /etc/passwd /etc/profile
Восстановите только один файл:
$ bup restore /mybackup/latest/etc/passwd
Restoring: 1, done.
$ ls -l passwd
-rw-r--r-- 1 apenwarr apenwarr 1478 2010-09-08 03:06 passwd
Восстановить и т. д. для проверки (без косой черты):
$ bup restore -C test /mybackup/latest/etc
Restoring: 3, done.
$ find test
test
test/etc
test/etc/passwd
test/etc/profile
Восстановите содержимое etc для проверки (косая черта в конце):
$ bup restore -C test /mybackup/latest/etc/
Restoring: 2, done.
$ find test
test
test/passwd
test/profile
Восстановите содержимое метаданных etc и etc для проверки (завершение «/.»):
$ 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/profile
Восстановить дерево без риска несанкционированного доступа:
# mkdir --mode 0700 restore-tmp
# bup restore -C restore-tmp /somebackup/latest/foo
Restoring: 42, done.
# mv restore-tmp/foo somewhere
# rmdir restore-tmp
Восстановите дерево, переназначив старого пользователя и группу на нового пользователя и группу:
# 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 y
Восстановите дерево, переназначив старый uid на новый uid. Обратите внимание, что старый пользователь должен быть стерт, чтобы bup не предпочитал его 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 y
Альтернативный способ сделать то же самое, аннулируя пользователей/группы с помощью --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)
Часть люкса bup(1).
Эйвери Пеннарун apenwarr@gmail.com.