Restaurar os arquivos necessários e preservar os acréscimos

Big DataBeginner
Pratique Agora

Introdução

A programação atual da oficina foi cancelada por engano e seu arquivo de contato está ausente. Dois snapshots nativos continuam disponíveis, mas o mais recente contém um rascunho não aprovado. A equipe precisa recuperar a programação aprovada sem perder uma atividade Paper Folding adicionada depois nem a nota de acesso inalterada.

Este ambiente independente contém todos os dados necessários e não usa arquivos do laboratório anterior. Você deve conhecer os caminhos de snapshots e as operações comuns de arquivos HDFS já praticadas. Você escolherá uma versão segundo os requisitos do trabalho, restaurará dois objetos com nome e testará a leitura compartilhada real. Use Terminal do início ao fim. A estimativa do autor é de 45 minutos, incluindo leitura e recuperação de erros comuns.

Escolher a versão aprovada e restaurar a programação

Nesta etapa, você comparará dois pontos de recuperação e restaurará apenas a programação que corresponde às atividades publicadas. Abra Terminal e comece na área de trabalho local:

cd /home/labex/project

A programação publicada exige Printmaking na sala A e Bookbinding na sala B. O contato para visitantes é visitors@example.test. Um rascunho não está aprovado só porque é mais recente. O arquivo atual adicionado depois, late-session.csv, acrescenta a sala C com Paper Folding e deve permanecer. Preserve também notes.txt, todos os snapshots fornecidos, a propriedade do usuário comum e o compartilhamento somente para leitura. Não reconstrua o diretório inteiro.

Liste os arquivos atuais e os pontos de recuperação nativos:

hdfs dfs -ls /user/labex/snapshot-workshop/team
hdfs dfs -ls /user/labex/snapshot-workshop/team/.snapshot

A programação atual existe, mas contacts.csv está ausente. Os snapshots se chamam morning-approved e afternoon-draft. Compare as programações que eles realmente contêm; apenas o nome não é uma prova suficiente:

hdfs dfs -cat /user/labex/snapshot-workshop/team/.snapshot/morning-approved/schedule.csv
hdfs dfs -cat /user/labex/snapshot-workshop/team/.snapshot/afternoon-draft/schedule.csv

A versão da manhã contém Printmaking e Bookbinding. A versão da tarde substitui a atividade da sala A por Draft Planning. Leia a programação atual:

hdfs dfs -cat /user/labex/snapshot-workshop/team/schedule.csv

Ela contém A,CANCELLED. Portanto, o ponto de recuperação correto é a versão aprovada da manhã, não o snapshot mais recente. O arquivo ausente pode ser restaurado separadamente; não há motivo para substituir a árvore inteira.

A operação HDFS -cp copia entre caminhos HDFS. A opção -p preserva os horários, o proprietário, o grupo e o modo de permissões da origem; -f permite substituir o destino existente indicado. Aqui, os dois caminhos continuam dentro da pasta do curso, e você é o proprietário do destino:

hdfs dfs -cp -p -f /user/labex/snapshot-workshop/team/.snapshot/morning-approved/schedule.csv /user/labex/snapshot-workshop/team/schedule.csv

Leia a programação restaurada com a identidade real analyst:

sudo -u analyst /usr/local/bin/hdfs dfs -cat /user/labex/snapshot-workshop/team/schedule.csv

Agora ela mostra Printmaking e Bookbinding. Verifique se o acréscimo posterior na pasta atual continua disponível:

hdfs dfs -cat /user/labex/snapshot-workshop/team/late-session.csv

Ele ainda mostra Paper Folding. Se uma cópia informar que a origem está ausente, liste esse diretório exato do snapshot e corrija o caminho de origem; não crie um substituto vazio. Se copiar o rascunho por engano, compare novamente as duas versões históricas e repita apenas a cópia correta do arquivo com nome. A cópia com -f pode substituir somente essa versão errada sem tocar na nova atividade.

Restaurar o contato ausente e manter o compartilhamento somente para leitura

Nesta etapa, você restaurará o contato excluído, lerá a programação completa e testará os limites de acesso. Continue no mesmo Terminal.

Compare os dois arquivos históricos de contato antes de escolher um:

hdfs dfs -cat /user/labex/snapshot-workshop/team/.snapshot/morning-approved/contacts.csv
hdfs dfs -cat /user/labex/snapshot-workshop/team/.snapshot/afternoon-draft/contacts.csv

A versão da manhã contém o endereço exigido, visitors@example.test; o rascunho usa um endereço temporário. Copie o arquivo histórico aprovado para seu caminho atual ausente. Nenhuma opção de sobrescrita é necessária quando o destino não existe:

hdfs dfs -cp -p /user/labex/snapshot-workshop/team/.snapshot/morning-approved/contacts.csv /user/labex/snapshot-workshop/team/contacts.csv

Se esse destino já existir depois de uma cópia concluída, leia-o primeiro. Se o conteúdo estiver incorreto, use o mesmo padrão limitado -cp -p -f da etapa 1, com o contato aprovado como origem e apenas esse destino. Não exclua a pasta inteira para resolver um erro de arquivo existente.

Leia o contato restaurado com o usuário de compartilhamento analyst:

sudo -u analyst /usr/local/bin/hdfs dfs -cat /user/labex/snapshot-workshop/team/contacts.csv

Leia a nota inalterada e a atividade posterior com a mesma identidade real:

sudo -u analyst /usr/local/bin/hdfs dfs -cat /user/labex/snapshot-workshop/team/notes.txt
sudo -u analyst /usr/local/bin/hdfs dfs -cat /user/labex/snapshot-workshop/team/late-session.csv

A nota mantém a sala silenciosa aberta, e a atividade posterior continua sendo Paper Folding. Essas leituras reais utilizam os dados preservados; um simples download local não repararia essa programação HDFS.

Examine o proprietário e os modos do diretório e de todos os arquivos atuais. -ls -d mostra a entrada do próprio diretório; as aspas em torno de * deixam o HDFS selecionar os caminhos, em vez do seu shell local:

hdfs dfs -ls -d /user/labex/snapshot-workshop/team '/user/labex/snapshot-workshop/team/*'

O diretório fornecido usa 750 e seus arquivos usam 640, com proprietário labex e grupo bigdata. Esses modos permitem ao grupo ler e atravessar o diretório, sem escrever. O diretório também importa: um grupo com escrita nele poderia excluir ou substituir arquivos, mesmo que cada arquivo fosse somente para leitura.

Use a operação HDFS preparada -test -w para perguntar se uma identidade tem acesso de escrita. Ela não tenta escrever. O próximo comando deve retornar um código diferente de zero, sem saída, porque analyst não deve poder alterar o diretório da equipe:

sudo -u analyst /usr/local/bin/hdfs dfs -test -w /user/labex/snapshot-workshop/team

Esse resultado intencional diferente de zero significa que o teste do limite foi bem-sucedido; continue. Uma identidade não relacionada não deve poder ler os arquivos compartilhados privados. Os próximos dois comandos devem falhar com Permission denied:

sudo -u nobody /usr/local/bin/hdfs dfs -cat /user/labex/snapshot-workshop/team/schedule.csv
sudo -u nobody /usr/local/bin/hdfs dfs -cat /user/labex/snapshot-workshop/team/contacts.csv

Se uma alteração acidental de permissões bloqueou analyst, restaure somente o objeto afetado do curso: -chgrp bigdata define o grupo de compartilhamento, -chmod 750 aplica-se ao diretório da equipe e -chmod 640 a um arquivo atual com nome. Por exemplo, os comandos completos abaixo reparam apenas o contato e o diretório da equipe:

hdfs dfs -chgrp bigdata /user/labex/snapshot-workshop/team/contacts.csv
hdfs dfs -chmod 640 /user/labex/snapshot-workshop/team/contacts.csv
hdfs dfs -chmod 750 /user/labex/snapshot-workshop/team

Por fim, liste a programação atual completa e os pontos de recuperação preservados:

hdfs dfs -ls /user/labex/snapshot-workshop/team
hdfs dfs -ls /user/labex/snapshot-workshop/team/.snapshot

Os quatro arquivos atuais e os dois snapshots originais permanecem. Você restaurou os dois objetos afetados sem perder o trabalho mais recente. Outra abordagem válida pode remover um único arquivo atual que esteja comprovadamente danificado e depois copiar sua versão histórica, desde que preserve o mesmo conteúdo e os mesmos limites de compartilhamento. A tarefa não exige uma grafia específica de comandos nem um editor particular.

Resumo

Você escolheu a versão histórica aprovada pelo conteúdo relevante ao trabalho, restaurou um arquivo alterado e um ausente, e preservou o trabalho posterior e os snapshots originais. As leituras reais de analyst e as recusas a usuários não relacionados demonstraram o resultado compartilhado. Um snapshot no mesmo HDFS continua sendo uma ferramenta de recuperação, não um backup independente nem uma garantia de recuperação após a perda de todo o armazenamento.