bup-index - справочное руководство, опции, примеры команд


ИМЯ

bup-index - распечатать и/или обновить индекс файловой системы 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 манипулирует индексом файловой системы, который представляет собой кэш абсолютных путей и их метаданных (атрибуты, хэши SHA-1 и т. д.). Индекс bup аналогичен по функциям индексу git(1), а индекс по умолчанию можно найти в $BUP_DIR/bupindex.

Создание резервной копии в bup состоит из двух шагов: обновление индекса с помощью bup index, затем фактическое резервное копирование файлов (или подмножества файлов) с помощью bup save. Разделение существует по следующим причинам:

  1. Существует несколько способов создания списка файлов, для которых необходимо выполнить резервное копирование. Например, вы можете использовать inotify(7) или dnotify(7).

  2. Даже если вы выполняете резервное копирование файлов в несколько мест назначения (для дополнительной избыточности), имена файлов, атрибуты и хэши каждый раз будут одинаковыми. Таким образом, вы можете избавить себя от необходимости повторно генерировать список файлов для каждого набора резервных копий.

  3. Вы можете использовать данные, отслеживаемые индексом bup, для других целей (например, для ускорения работы других программ, которым нужна та же информация).

ПРИМЕЧАНИЯ

На данный момент bup будет игнорировать атрибуты Linux (см. chattr(1) и lsattr(1)) на некоторых системах (любых системах с обратным порядком байтов, где sizeof(long) < sizeof(int)). Это связано с тем, что ядро Linux и FUSE в настоящее время расходятся во мнениях относительно типа аргументов системного вызова attr, и поэтому в системах с обратным порядком байтов невозможно получить результаты без риска повреждения стека (http://lwn.net/Articles). /575846/). В этих ситуациях bup будет выводить предупреждение при первом использовании атрибутов Linux во время любой операции индексирования/сохранения/восстановления.

bup приспосабливается к ожидаемому «наихудшему» разрешению временной метки файловой системы — в настоящее время это одна секунда; примеры включают VFAT, ext2, ext3, small ext4 и т. д. Поскольку bup не может знать разрешение метки времени файловой системы и может проходить через несколько файловых систем во время любого заданного запуска, всегда предполагается, что разрешение может быть не лучше одной секунды.

На практике это означает, что обновления индекса немного неточны, и поэтому при сохранении bup может иногда записываться неожиданные изменения файловой системы. Это связано с тем, что во время обновления индекса, если bup встречает путь, фактические метки времени которого более поздние, чем за одну секунду до начала обновления, bup установит временные метки индекса для этого пути (mtime и ctime) ровно за одну секунду до запуска, — эффективно ограничивая эти значения.

Это гарантирует, что никакие последующие изменения этих путей не могут привести к временным отметкам, идентичным тем, что указаны в индексе. Если бы это было возможно, bup мог бы пропустить изменения.

Вы можете увидеть эффект такого поведения в этом примере (предположим, что между первоначальным созданием файла и первым запуском индекса прошло менее одной секунды):

$ 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.

Строго говоря, bup не должен заметить изменения в src/2, но он его замечает благодаря описанным выше приспособлениям.

РЕЖИМЫ

-u, --update

рекурсивно обновить индекс для заданных путей и их потомков. Должен быть указан один или несколько путей, и если путь заканчивается символической ссылкой, индексироваться будет сама ссылка, а не цель. Если параметр режима не указан, --update используется по умолчанию, а пути могут быть исключены параметрами --exclude, --exclude-rx и --one-file-system.

-p, --print

распечатать содержимое индекса. Если заданы пути, показывает заданные записи и их потомков. Если пути не указаны, отображаются записи, начинающиеся с текущего рабочего каталога (.).

-m, --modified

печатает только те файлы, которые помечены как измененные (т. е. измененные с момента последней резервной копии) в индексе. Подразумевает -p.

-s, --status

добавляйте код состояния (A, M, D или пробел) перед каждым путем. Подразумевает -p. Коды соответственно означают, что файл помечен в индексе как добавленный, измененный, удаленный или не изменившийся с момента последнего резервного копирования.

--check

тщательно проверяйте целостность файла индекса до и после обновления. В основном полезно для автоматических тестов.

--clear

очистить индекс по умолчанию.

ПАРАМЕТРЫ

-H, --hash

для каждого напечатанного файла добавьте последний записанный хеш-код. Хэш-код обычно генерируется при сохранении bup. Для объектов, которые еще не были заархивированы, хэш-код будет 000000000000000000000000000000000000000000. Обратите внимание, что хэш-код печатается, даже если известно, что файл был изменен или удален в индексе (т. е. файл в файловой системе больше не соответствует записанный хеш). Если это проблема для вас, используйте --status.

-l, --long

вывести дополнительную информацию о каждом файле в формате, аналогичном параметру -l команды ls(1).

-x, --xdev, --one-file-system

не пересекайте границы файловой системы при обходе файловой системы — хотя, как и в случае с tar и rsync, сами точки монтирования все равно будут проиндексированы. Применимо, только если вы используете -u.

--fake-valid

пометить указанные пути как актуальные, даже если они таковыми не являются. Это может быть полезно для тестирования или во избежание ненужного резервного копирования файлов, которые, как вы знаете, скучны.

--fake-invalid

помечать указанные пути как неактуальные, заставляя следующий запуск «bup save» повторно проверять их содержимое.

-f, --indexfile=indexfile

используйте другое имя файла индекса вместо $BUP_DIR/bupindex.

--exclude=path

исключить путь из резервной копии (можно повторить).

--exclude-from=filename

чтение – исключить пути из имя файла, по одному пути на строку (может повторяться). Игнорировать полностью пустые строки.

--exclude-rx=pattern

исключить любой путь, соответствующий шаблону, который должен быть регулярным выражением Python (http://docs.python.org/library/re.html). Шаблон будет сравниваться с полным путем без привязки, поэтому «x/y» будет соответствовать «ox/yard» или «box/yards». Чтобы исключить содержимое /tmp, но не сам каталог, используйте «^/tmp/. ». (можно повторить)

Примеры:

  • `/foo$' - исключить любой файл с именем foo

  • `/foo/$' - исключить любой каталог с именем foo

  • `/фу/.' - исключить содержимое любого каталога с именем foo

  • `^/tmp/.' - исключить содержимое /tmp корневого уровня, но не сам /tmp

--exclude-rx-from=filename

читать шаблоны –exclude-rx из имя_файла, по одному шаблону в строке (может повторяться). Игнорировать полностью пустые строки.

--no-check-device

не помечать запись как недействительную, если меняется номер устройства (stat(2) st_dev). Это может быть полезно при индексировании удаленных, автомонтируемых или моментальных файловых систем (LVM, Btrfs и т. д.), где номер устройства не является фиксированным.

-v, --verbose

увеличить вывод журнала во время обновления (можно использовать более одного раза). С одним -v выводить каждый каталог по мере его обновления; с двумя -v также распечатать каждый файл.

ПРИМЕРЫ

bup index -vux /etc /var /usr

СМОТРИТЕ ТАКЖЕ

bup-save(1), bup-drecurse(1), bup-on(1)

БУП

Часть набора bup(1).

АВТОРЫ

Эйвери Пеннарун apenwarr@gmail.com.