bup-index - imprima e/ou atualize o índice do sistema de arquivos 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 manipula o índice do sistema de arquivos, que é um cache de caminhos absolutos e seus metadados (atributos, hashes SHA-1, etc.). O índice bup é semelhante em função ao índice git(1), e o índice padrão pode ser encontrado em $BUP_DIR/bupindex.
Criar um backup no bup consiste em duas etapas: atualizar o índice com bup index e, em seguida, fazer backup dos arquivos (ou um subconjunto dos arquivos) com bup save. A separação existe por estas razões:
Há mais de uma maneira de gerar uma lista de arquivos que precisam de backup. Por exemplo, você pode querer usar inotify(7) ou dnotify(7).
Mesmo se você fizer backup de arquivos em vários destinos (para redundância adicional), os nomes de arquivo, atributos e hashes serão sempre os mesmos. Assim, você pode evitar o trabalho de gerar repetidamente a lista de arquivos para cada conjunto de backup.
Você pode querer usar os dados rastreados pelo índice bup para outros fins (como acelerar outros programas que precisam das mesmas informações).
No momento, o bup irá ignorar os atributos do Linux (cf. chattr(1) e lsattr(1)) em alguns sistemas (qualquer sistema big-endian onde sizeof(long) < sizeof(int)). Isso ocorre porque o kernel do Linux e o FUSE atualmente discordam sobre o tipo de argumento de chamada do sistema attr e, portanto, em sistemas big-endian, não há como obter os resultados sem o risco de corrupção da pilha (http://lwn.net/Articles /575846/). Nessas situações, o bup imprimirá um aviso na primeira vez que os atributos do Linux forem relevantes durante qualquer operação de índice/salvar/restaurar.
O bup faz acomodações para a resolução de registro de data e hora do sistema de arquivos de “pior caso” esperada – atualmente um segundo; os exemplos incluem VFAT, ext2, ext3, small ext4, etc. Como o bup não pode saber a resolução do timestamp do sistema de arquivos e pode estar percorrendo vários sistemas de arquivos durante uma determinada execução, ele sempre assume que a resolução não pode ser melhor que um segundo.
Na prática, isso significa que as atualizações de índice são um pouco imprecisas e, portanto, o bup save pode ocasionalmente registrar alterações no sistema de arquivos que você não esperava. Isso porque, durante uma atualização de índice, se o bup encontrar um caminho cujos timestamps reais sejam mais recentes do que um segundo antes do início da atualização, o bup definirá os timestamps do índice para esse caminho (mtime e ctime) exatamente um segundo antes da execução, – limitando efetivamente esses valores.
Isso garante que nenhuma alteração subsequente nesses caminhos possa resultar em registros de data e hora idênticos aos do índice. Se isso fosse possível, o bup poderia ignorar as modificações.
Você pode ver o efeito desse comportamento neste exemplo (suponha que menos de um segundo decorra entre a criação inicial do arquivo e a primeira execução do índice):
$ 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.Estritamente falando, bup não deveria notar a mudança para src/2, mas nota, devido às acomodações descritas acima.
atualizar recursivamente o índice para os caminhos fornecidos e seus descendentes. Um ou mais caminhos devem ser especificados e, se um caminho terminar com um link simbólico, o próprio link será indexado, não o destino. Se nenhuma opção de modo for fornecida, --update é o padrão e os caminhos podem ser excluídos pelas opções --exclude, --exclude-rx e --one-file-system.
imprimir o conteúdo do index. Se forem fornecidos caminhos, mostra as entradas fornecidas e seus descendentes. Se nenhum caminho for fornecido, mostra as entradas começando no diretório de trabalho atual (.).
imprime apenas os arquivos marcados como modificados (ou seja, alterados desde o backup mais recente) no índice. Implica -p.
adicione um código de status (A, M, D ou espaço) antes de cada caminho. Implica -p. Os códigos significam, respectivamente, que um arquivo está marcado no índice como adicionado, modificado, excluído ou inalterado desde o último backup.
verifique cuidadosamente a integridade do arquivo de índice antes e depois da atualização. Principalmente útil para testes automatizados.
limpar o índice padrão.
para cada arquivo impresso, anexe o código hash gravado mais recentemente. O código hash é normalmente gerado por bup save. Para objetos que ainda não foram backup, o código de hash será 00000000000000000000000000000000000000000000. Observe que o código de hash é impresso, mesmo que o arquivo seja conhecido por ser modificado ou excluído no índice (ou seja. O arquivo no sistema de arquivos não corresponde mais ao hash registrado). Se isso for um problema para você, use --status.
imprimir mais informações sobre cada arquivo, em um formato semelhante à opção -l para ls(1).
não ultrapasse os limites do sistema de arquivos ao atravessá-lo - embora, como no tar e no rsync, os próprios pontos de montagem ainda sejam indexados. Aplicável apenas se você estiver usando -u.
marque os caminhos especificados como atualizados, mesmo que não estejam. Isso pode ser útil para testes ou para evitar o backup desnecessário de arquivos que você sabe que são chatos.
marca os caminhos especificados como não atualizados, forçando a próxima execução do “bup save” para verificar novamente seu conteúdo.
use um nome de arquivo de índice diferente em vez de $BUP_DIR/bupindex.
exclua caminho do backup (pode ser repetido).
read –exclude paths from filename, um caminho por linha (pode ser repetido). Ignore linhas completamente vazias.
exclua qualquer padrão correspondente ao caminho, que deve ser uma expressão regular do Python (http://docs.python.org/library/re.html). O padrão será comparado com o caminho completo, sem ancoragem, então “x/y” corresponderá a “boi/jarda” ou “caixa/jardas”. Para excluir o conteúdo de /tmp, mas não o diretório em si, use “^/tmp/. ”. (pode ser repetido)
Exemplos:
`/foo$' - exclui qualquer arquivo chamado foo
`/foo/$' - exclui qualquer diretório chamado foo
`/foo/.' - excluir o conteúdo de qualquer diretório chamado foo
`^/tmp/.' - exclui o conteúdo de /tmp no nível raiz, mas não o próprio /tmp
read –exclude-rx patterns from filename, um padrão por linha (pode ser repetido). Ignore linhas completamente vazias.
não marque uma entrada inválida se o número do dispositivo (stat(2) st_dev) mudar. Isso pode ser útil ao indexar sistemas de arquivos remotos, montados automaticamente ou instantâneos (LVM, Btrfs, etc.), onde o número do dispositivo não é fixo.
aumentar a saída de log durante a atualização (pode ser usado mais de uma vez). Com um -v, imprima cada diretório conforme ele é atualizado; com dois -v, imprima cada arquivo também.
bup index -vux /etc /var /usrbup-save(1), bup-drecurse(1), bup-on(1)
Parte do pacote bup(1).
Avery Pennarun apenwarr@gmail.com.