1. Como gravar backups na mesma fita LTO consecutivamente?
luizcarlos18rjusa Suse
Post recolhido
Enviado em 11/03/2015 - 15:41h
Oi Galera...
Sei que é dúvida de iniciante, mas não tenho experiência com o uso de fitas de backup.
Tenho ligado a um servidor de arquivos um drive de fita LTO com capacidade de 800 GB, faço diariamente um backup total de 236GB de tamanho e uso uma fita por dia, mas gostaria de ter uma fita reserva com pelo menos 3 backups ( 800GB > [3x{236GB}=708GB] ) e não sei como gravar 1 backup por dia durante 3 dias ( agendado no cron ).
por acaso o comando é tar -cvf /dev/nst0 /root/backup/$pasta? Onde:
$pasta= nome da pasta
nst0 = não rebobinar a fita
Como faço depois para restaurar qualquer um dos 3 backups dessa fita?
2. Re: Como gravar backups na mesma fita LTO consecutivamente?
paulo1205usa Ubuntu
Post recolhido
Enviado em 11/03/2015 - 20:40h
Uma coisa boa é que você já sabe que o prefixo n é para o dispositivo de fita que não rebobina automaticamente quando é fechado (e.g. /dev/nst0, em lugar de apenas /dev/st0).
Leia sobre o comando mt. Ele permite fazer coisas como avançar ou retroceder um determinado número de arquivos ou registros, rebobinar a fita, retensioná-la etc.
3. Não está dando certo...
luizcarlos18rjusa Suse
Post recolhido
Enviado em 25/03/2015 - 15:54h
Obrigado pela Ajuda, mas ainda continuo com dúvidas...
Tenho um gravador de fita ( HP 5 Ultriun ) reconhecido como (/dev/st0), e fiz os seguinte testes:
1 - CRIAÇÃO DE ARQUIVOS.
* criei a seguinte estrutura de diretórios:
Pasta teste ( pasta pai ), com as seguintes Subpastas:
*dei os seguintes comandos: ( para teste de gravação em série )
tar -cvf /dev/nst0 /root/testes/teste_a/
tar -cvf /dev/nst0 /root/testes/teste_b/
tar -cvf /dev/nst0 /root/testes/teste_zero/
* AGORA COMEÇAM OS PROBLEMAS!!!Após as gravações dei o comando:
tar -tvf /dev/nst0 > /root/testes/result.txt ( usando nst0)
saída:
tar: This does not look like a tar archive
tar: /root/testes/result.txt: Not found in archive
tar: Exiting with failure status due to previous errors
------------------------------------------------------------------------------------------------------------------------------
Segunda tentativa: (usando st0)
tar -tvf /dev/st0 > /root/testes/result.txt
saída:
tar: /dev/st0: Cannot read: Input/output error
tar: At beginning of tape, quitting now
tar: Error is not recoverable: exiting now
drive type = Generic SCSI-2 tape
drive status = 1174405120
sense key error = 0
residue count = 0
file number = 0
block number = 0
Tape block size 0 bytes. Density code 0x46 (unknown).
Soft error count since last status=0
General status bits on (41010000):
BOT ONLINE IM_REP_EN
mt -f /dev/nst0 tell verificar em que ponto da fita estou
saída:
mt: /dev/st0: Input/output error
Alguém pode me ajudar!? O que estou fazendo de errado?
4. e agora?
luizcarlos18rjusa Suse
Post recolhido
Enviado em 30/03/2015 - 08:38h
Pq meu drive não consigo gravar mais coisas na mesma fita?
5. Re: Como gravar backups na mesma fita LTO consecutivamente?
paulo1205usa Ubuntu
Post recolhido
Enviado em 31/03/2015 - 00:19h
Leia a manpage de st (seção 4 do manual) para entender como a fita funciona. Dela, eu destaco o seguinte trecho.
A filemark is automatically written to tape if the last tape operation before close was a write.
When a filemark is encountered while reading, the following happens. If there are data remaining in the buffer when the filemark is found, the buffered data is returned. The next read returns zero bytes. The following read returns data from the next file. The end of recorded data is signaled by returning zero bytes for two consecutive read calls. The third read returns an error.
Exemplificando, suponha que você colocou no drive uma fita rebobinada, e em seguida executou a seguinte operação.
tar cjf /dev/nst0 conjunto_de_dados_1
tar cjf /dev/nst0 conjunto_de_dados_2
tar cjf /dev/nst0 conjunto_de_dados_3
mt -f /dev/nst0 rewind
Você vai gravar na fita três “arquivos” (na nomenclatura de fitas) e vai rebobiná-la. Haverá, portanto, três filemarks (um padrão especial de bits que não se confunde com nada que possa ser gravado como parte do pacote de dados) ao final de cada arquivo, justamente para dizer que aquele arquivo acabou. (Alguns dispositivos ainda guardam uma segunda filemark após a filemark do último arquivo da fita.)
Se você ler dessa fita (depois de reboninada), é de se esperar, conforme a documentação, que sua leitura pare ao final do primeiro arquivo (quando encontrar a primeira filemark). Isso não quer dizer que o restante da fita acabou, mas sim que aquele conjunto de dados chegou ao final. Se você tentar uma nova operação de leitura depois daquele ponto, vai começar a ler do arquivo seguinte, e vai continuar lendo desse arquivo até a próxima filemark.
É claro que você não precisa ler todos os blocos de dados de todos os arquivos da fita sequencialmente até chegar ao arquivo desejado. O comando mt tem subcomandos que permitem avançar ou retroceder um determinado número de filemarks.
Algumas pessoas têm o hábito de gravar na fita informações sobre os dados que são ou serão gravados nela. Eu trabalhei numa empresa que fazia rodízio quinzenal de fitas de backup, e tinha o hábito de gravar no primeiro arquivo da fita uma cópia do label dessa fita. Era uma forma de identificar se a fita inserida no drive estava correta, antes de sobrescrever acidentalmente uma fita colocada por engano a respeito da ordem do rodízio.
Você poderia fazer algo melhor ainda. Por exemplo, você poderia ter em suas fitas um primeiro arquivo de tamanho fixo, onde você poderia gravar não só um label, mas também um índice do conteúdo da fita, e atualizar esse índice na medida em que fosse gravando novos arquivos à fita.
#!/bin/bash
# ATENÇÃO: Este código é uma ideia. Ele não foi testado,
# nem mesmo com relação a sintaxe.
export TAPE=/dev/nst0
# Tenta ler o label+diretorio de 1MB (100 blocos de 10kB)
mt rewind
dd if=$TAPE iflag=fullblock bs=10k count=100 | tr -d \\0 > /tmp/workfile
mt rewind
if ! head -n 1 /tmp/workfile | egrep -q '^Minha fita com label [0-9A-F]{8}$'; then
# Fita sem label ou label invalido => assume que a fita esta vazia.
echo -n "Aguarde: limpando conteúdo anterior da fita... "
if ! mt erase; then
echo "FALHA! Ejetando a fita." >&2
mt rewoffl
exit 1
fi
echo "OK."
echo -n "Gerando novo label... "
label=$(printf "%08X" $(date "+%s"))
echo "OK (label: $label)."
echo -n "Gravando novo label na fita..."
if ! { echo "Minha fita com label $label"; cat /dev/zero; } | dd iflags=fullblock of=$TAPE bs=10k count=100; then
echo "FALHA! Ejetando a fita." >&2
mt rewoffl
exit 1
fi
echo "Label gravado com sucesso."
mt rewind
echo "Minha fita com label $label" > /tmp/workfile
fi
# Na contagem de arquivos gravados, inclui o label-indice
n_files=`wc -l /tmp/workfile`
echo -n "Deslocando para o final da fita... "
if ! mt fsf $n_files; then
echo "FALHA! Ejetando a fita." >&2
mt rewoffl
exit 1
fi
echo "OK."
newdataset=$(date "+Back-up_of_%Y-%m-%d_%H:%M:%S%z")
echo "Gravando dataset $newdataset... "
if ! tar c diretorio1 diretorio2 diretorio3; then
echo "FALHA! Ejetando a fita sem atualizar índice." >&2
mt rewoffl
exit 1
fi
echo "Backup bem sucedido."
echo -n "Atualizando indice... "
mt rewind
echo "$newdataset" >> /tmp/workfile
cat /tmp/workfile /dev/zero | dd iflags=fullblock bs=10k count=100 of=$TAPE
mt rewind
echo "OK."
6. Muito obrigado pela ajuda
luizcarlos18rjusa Suse
Post recolhido
Enviado em 06/04/2015 - 16:04h
Velhinho, to aqui queimando a cabeça para tentar entender o código, li o manual do mt e queria tirar uma dúvida ( to ainda em fase de testes)
1 - gravei os 3 arquivos:
serverbkp:~ # tar -cvf /dev/nst0 /root/testes/teste_zero
tar: Removing leading `/' from member names
/root/testes/teste_zero/
/root/testes/teste_zero/arquivo_zero.txt
serverbkp:~ # tar -cvf /dev/nst0 /root/testes/teste_a
tar: Removing leading `/' from member names
/root/testes/teste_a/
/root/testes/teste_a/teste_primeiro.txt
/root/testes/teste_a/teste1
serverbkp:~ # tar -cvf /dev/nst0 /root/testes/teste_b
tar: Removing leading `/' from member names
/root/testes/teste_b/
/root/testes/teste_b/teste_segundo.txt
/root/testes/teste_b/teste2
4 - Repito a operação ( para ver se lista o segundo bloco )
serverbkp:~ # tar -tvf /dev/nst0
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
( deu erro )
5 - Mesmo com o erro, eu repito pra ver se cola...
tar: This does not look like a tar archive ?
tar: Exiting with failure status due to previous errors ?
2 - Porque elas ocorrem?
3 - Como evitar ter que fazer 2 vezes o comando para só dar certo na segunda vez?
Desde já agradeço...
Luiz
7. Re: Como gravar backups na mesma fita LTO consecutivamente?
paulo1205usa Ubuntu
Post recolhido
Enviado em 06/04/2015 - 19:55h
No começo da minha última mensagem, eu destaquei um trecho da manpage de st, que é o device driver que lida com fitas. Só o trecho destacado serviria bem para explicar exatamente o comportamento que você viu, mas eu recomendo que você leia toda a manpage (além, é claro, da manpage do mt, que você já leu).
Você quer os subcomandos de mt que avancem (ou retrocedam) em arquivos da fita. Isso está na documentação de mt. No script que eu mostrei há um exemplo de uso do subcomando de avançar.
Usamos cookies essenciais para manter o site funcionando e Google Analytics para métricas de audiência. Cookies de anúncios só serão carregados se você permitir.