Ferramenta de linha de comando para procurar nomes de arquivos em unidades de backup offline [closed]

1

Estou procurando uma ferramenta de código aberto (linha de comando) para registrar e pesquisar todas as minhas unidades (de backup) em um nível de nome de arquivo. Eu quero procurar por nomes de arquivos e pastas preferencialmente escritos como expressões regulares ou padrões de glob de arquivo. As unidades externas contêm apenas sistemas de arquivos HFS e NTFS normais. Os backups são feitos via cópia direta de arquivo.

O requisito é que a ferramenta compile no OS X e funcione sem cada uma das unidades conectadas, mas sim apontando-me para a unidade caso uma unidade contenha um arquivo com o padrão que eu procurei.

No momento, uso uma solução de script manual com locate bancos de dados, um para cada unidade de backup externa, mas isso é um pouco complicado, porque locate pode acessar apenas um banco de dados por vez e não contém qualquer sistema de gestão para todos os índices / bases de dados.

Existem outras ferramentas para isso?

    
por halloleo 18.10.2012 / 07:26

1 resposta

0

Não seria mais fácil modificar sua solução com script de acordo com suas necessidades? Por exemplo, você pode armazenar seus índices de backup em um diretório (por exemplo, /var/local/backupindex ) e fazer com que o script do wrapper em torno de localize faça algo assim:

#!/bin/bash

db_dir=/var/local/backupindex

case "$1" in
  find)
    for db in "$db_dir"; do
      db_name="$(basename "$db")"
      last_changed="$(stat -f "%m" "$db")"
      for pattern in "$@"; do
        locate -d "$db" "$pattern" | sed "s/.*/$db_name ($last_changed): &/"
      done
    done
    ;;
  update)
    # add code to derive $db_name from external drive identifier, e.g.:
    #sn=$(system_profiler SPUSBDataType | awk '/Serial/ {print $3}')
    #[[ $sn =~ 123456 ]] && db_name=sn_123456.db
    updatedb --localpaths='/mount/point' --output=$db_name
    ;;
  *)
    echo "Unknown subcommand: $1" 1>&2
    exit 1
    ;;
esac

exit 0

Isso irá preceder cada correspondência localizar retornos com o nome do arquivo de banco de dados e a data em que o arquivo foi modificado pela última vez. Ao tornar o primeiro argumento um subcomando, você pode implementar consulta, atualização, limpeza, ... no mesmo script.

    
por 18.10.2012 / 10:16