Problema de restauração de backup tar: por que existem / dev / disk / by-id / symlinks e como posso evitá-los?

0

Estou tentando criar um sistema de backup bare-bone com as ferramentas mais básicas disponíveis no openSUSE 11.3 (neste caso: bash, fdisk, tar & grub legacy)

Este é o fluxo de trabalho dos meus scripts:

backup.sh:

  1. (Executar a partir do sistema externo, por exemplo, LiveCD)
  2. crie um script fdisk ($ fscript) a partir da saída do fdisk -l [works]
  3. monte as partições a partir do fstab do sistema [works]
  4. tar as coisas cruciais em file.tgz [works]

restore.sh:

  1. (Executar a partir do sistema externo, por exemplo, LiveCD)
  2. executar fdisk $ dest < $ fscript para restaurar o particionamento [works]
  3. formata e monta partições a partir do fstab do sistema [falha]
  4. extrair do arquivo.tgz [funciona ao montar manualmente]
  5. restaura o grub [falha]

Recentemente notei que o openSUSE (embora eu tenha certeza que não tem nada a ver com a distribuição) tem saída diferente em / etc / fstab e /boot/grub/menu.lst, mais precisamente o nome da partição é por exemplo " / dev / disk / by-id / números-brandname-morenumbers-part2 " em vez de " / dev / sda2 " - mas basicamente é um simples link simbólico.

Minhas perguntas sobre isso:

  • qual é o sentido de tais links simbólicos, especialmente se estamos restaurando em um disco diferente?
  • existe uma maneira de evitar a criação desses links simbólicos e usar o "true" / dev / sdx em todos os lugares?
  • se o anterior é não, você sabe uma maneira de substituir esses links simbólicos instantaneamente em um arquivo de texto? Eu tentei este script, mas só funciona se o arquivo começa com a descrição do link simbólico (caso do fstab, não menu.lst):

    ### search and replace /dev/disk/by-id/... to /dev/sdx
    while read oldVolume rest; do # get first element, ignore rest of line
        if [[ "$oldVolume" =~ ^/dev/disk/by-id/.*(-part[0-9]*$)? ]]; then
            newVolume=$(readlink $oldVolume) # replace pointer by pointee, returns "../../sdx"
            echo /dev/${newVolume##*/} $rest >> TMP # format to "/dev/sdx", write line
        else
            echo $oldVolume $rest >> TMP # nothing to do
        fi
    done < $file
    mv -f TMP $file # save changes
    

Eu tive problemas para encontrar uma solução para isso no Google, então eu esperava que alguns dos membros aqui pudessem me ajudar.

Obrigado.

    
por SK. 02.03.2011 / 17:32

1 resposta

1

Os links simbólicos existem para que você possa referenciar os dispositivos por um nome exclusivo (combinação de fabricante, modelo e número de série). Isso é especialmente útil se seus discos alterarem nomes de dispositivos se você inicializar com uma unidade flash instalada.

Eu tenho usado esses links para resolver problemas com o ZFS e discos que movem nós de dispositivos (especialmente discos USB).

Usando os links simbólicos, não importa em que ordem os discos são detectados ou conectados.

Você não deveria fazer backup / dev de qualquer forma - não há nada lá que seja útil para um backup.

    
por 02.03.2011 / 17:39