Introdução
A equipe de conservação de livros agora usa uma conta receptora dedicada. Entregue Garden Atlas à mesa preparada e depois atualize catálogo e tratamento, acrescente uma folha e retire a antiga lista gerada. O destinatário deve conseguir ler os textos entregues e executar o leitor.
Este laboratório começa de forma independente com credenciais e pastas preparadas. Basta conhecer o básico do terminal e os métodos locais de rsync do primeiro laboratório; identidade SSH, verificação do host e caminhos remotos são apresentados aqui. Comandos e textos fictícios dos livros permanecem em inglês.
Identificar a conta receptora preparada
Nesta etapa, você confirmará a identidade SSH preparada e entregará a coleção à conta receptora real. Use Terminal. Este laboratório independente recria origem e destinatário na edição 1; não reutiliza arquivos do laboratório anterior.
As duas contas compartilham este ambiente de treinamento e seu kernel. Representam os dois lados de uma mudança, não duas máquinas físicas. labex é dono de /home/labex/project/folder-move/old; bindery é dono de /home/bindery/incoming. A raiz receptora contém uma nota própria e um catálogo antigo.
SSH executa um comando como outra conta por uma conexão criptografada. A chave de identidade do cliente autentica você; a chave de host do servidor identifica a ponta da conexão. Elas resolvem problemas distintos. A preparação forneceu uma chave dedicada e fixou uma chave de host confiável com base nos dados de provisionamento deste ambiente. O acesso de login da plataforma não foi alterado.
cd /home/labex/project/folder-move
cat ssh/config
Host bindery-desk é um alias do cliente. Seleciona o usuário bindery em 127.0.0.1, o endereço de loopback deste mesmo ambiente. IdentityFile aponta para sua chave privada dedicada; não mostre nem copie seu conteúdo. IdentitiesOnly yes seleciona essa identidade. UserKnownHostsFile aponta para a chave fixada; StrictHostKeyChecking yes rejeita um host desconhecido ou alterado. BatchMode yes faz erros de autenticação falharem sem esperar uma senha.
ssh-keygen -lf mostra a impressão digital de uma chave pública. Compare o valor SHA256: com a impressão digital do provisionamento:
ssh-keygen -lf ssh/known_hosts
cat ssh/host-fingerprint.txt
Os hashes devem coincidir; rótulos e comentários podem diferir. Aqui o arquivo de provisionamento confiável estabelece a identidade esperada; uma mudança real exige uma impressão digital do administrador obtida de maneira independente e confiável. Uma chave coletada apenas de uma rede não confiável não estabelece confiança. Pare se houver divergência; não apague a chave fixada nem desative a verificação do host.
-F ssh/config seleciona esta configuração de cliente separada sem substituir suas configurações SSH normais. Um comando entre aspas simples é enviado ao destinatário; seus caminhos são remotos. Pontos e vírgulas separam comandos executados em ordem naquele shell remoto. Confirme conta, diretório pessoal, rsync e destino real antes de transferir:
ssh -F ssh/config bindery-desk 'whoami; pwd; rsync --version; ls -la /home/bindery/incoming; cat /home/bindery/incoming/receiver-note.txt'
rsync --version
A conta é bindery, o diretório pessoal é /home/bindery e ambas as pontas mostram rsync. A nota mantém a instrução sobre a prateleira oeste. Conectar com sucesso à conta errada não é uma migração válida. Uma permissão negada exige investigar a identidade ou as permissões do destinatário; um aviso de host alterado exige investigar a ponta confiável. Nenhum dos dois se corrige adicionando opções inseguras.
Para rsync, -e 'ssh -F ssh/config' escolhe o transporte SSH. O destino bindery-desk:/home/bindery/incoming/collection/ usa a conta configurada e um caminho naquele destinatário. Os dois-pontos tornam esse destino remoto; uma pasta local chamada remote não usaria SSH. Mantenha a barra final da origem e o filtro já praticados:
rsync -ani -e 'ssh -F ssh/config' --exclude='*.tmp' old/collection/ bindery-desk:/home/bindery/incoming/collection/
rsync -ai -e 'ssh -F ssh/config' --exclude='*.tmp' old/collection/ bindery-desk:/home/bindery/incoming/collection/
ssh -F ssh/config bindery-desk '/home/bindery/incoming/collection/read-book'
Leia o catálogo e o tratamento com dobradiças de papel de Garden Atlas a partir da conta receptora. Isso é o uso remoto real do leitor entregue, com sua configuração oculta e permissão de execução. Depois você continua no prompt local; um comando SSH pontual não move seu terminal local para o diretório pessoal remoto.
Concluir a primeira entrega remota
Nesta etapa, você entregará a lista gerada separada e lerá por SSH tanto os dados próprios do destinatário quanto os gerenciados pela origem. Continue em Terminal, em /home/labex/project/folder-move.
Sincronize somente o diretório gerenciado generated/. Deixe as notas privadas de pessoal fora da transferência:
rsync -ani -e 'ssh -F ssh/config' old/generated/ bindery-desk:/home/bindery/incoming/generated/
rsync -ai -e 'ssh -F ssh/config' old/generated/ bindery-desk:/home/bindery/incoming/generated/
ssh -F ssh/config bindery-desk 'cat /home/bindery/incoming/generated/current.txt /home/bindery/incoming/receiver-note.txt; /home/bindery/incoming/collection/read-book'
Espere Garden Atlas | desk edition 1, a nota receptora intacta e o leitor utilizável. O modo de arquivamento preserva o bit executável, mas os arquivos recebidos pertencem à conta receptora; ela não pode preservar donos arbitrários da origem. Os dois diretórios gerenciados estão completos sem espelhar a raiz receptora.
Se uma transferência anterior sem filtro incluiu uma prévia, primeiro examine por SSH o arquivo indesejado exato. Remova apenas esse temporário usando o método rm do laboratório local. Não apague incoming nem a nota receptora. Um filtro evita transferências futuras, mas não limpa um arquivo já copiado.
Aplicar a próxima edição dentro do escopo gerenciado
Nesta etapa, você entregará uma segunda edição e retirará somente a lista gerada antiga. Permaneça em Terminal, em /home/labex/project/folder-move. Os caminhos de destino após os dois-pontos estão na conta receptora.
cat aceita vários nomes de arquivo e os mostra nessa ordem. Leia a próxima edição fornecida antes de substituir a origem editável:
cat revision/collection/texts/catalog.txt revision/collection/texts/treatment.txt revision/collection/texts/addendum.txt
O catálogo agora tem 48 folhas, o tratamento usa dobradiças de linho e há um adendo novo. cp -a copia recursivamente preservando os atributos. revision/. significa todo o conteúdo, incluindo arquivos ocultos. Isso sobrepõe as alterações fornecidas a old/, mas não remove uma entrada ausente da revisão. A mesa aposenta explicitamente old/generated/obsolete.txt; remova apenas esse arquivo de origem nomeado. rm apaga um arquivo permanentemente; não amplie o caminho.
cp -a revision/. old/
rm old/generated/obsolete.txt
Normalmente rsync decide se os dados mudaram pelo tamanho e horário de modificação. -c acrescenta uma comparação do conteúdo por soma de verificação. Esses arquivos pequenos limitam o custo e permitem detectar mudanças de tamanho igual com horários preservados. Isso não cria histórico de versões nem backup. Simule e aplique a atualização da coleção:
rsync -anci -e 'ssh -F ssh/config' --exclude='*.tmp' old/collection/ bindery-desk:/home/bindery/incoming/collection/
rsync -aci -e 'ssh -F ssh/config' --exclude='*.tmp' old/collection/ bindery-desk:/home/bindery/incoming/collection/
A simulação da coleção deve mostrar os dois textos revisados e o novo adendo, sem prévias temporárias. Também podem aparecer alterações apenas de atributos.
--delete remove entradas do destino ausentes da origem dentro do diretório de sincronização escolhido. Aqui somente generated/ é totalmente gerenciado; a raiz receptora não é. Simule a retirada, procure *deleting obsolete.txt e aplique exatamente o mesmo escopo:
rsync -anci -e 'ssh -F ssh/config' --delete old/generated/ bindery-desk:/home/bindery/incoming/generated/
rsync -aci -e 'ssh -F ssh/config' --delete old/generated/ bindery-desk:/home/bindery/incoming/generated/
ssh -F ssh/config bindery-desk 'cat /home/bindery/incoming/generated/current.txt /home/bindery/incoming/collection/texts/addendum.txt /home/bindery/incoming/receiver-note.txt'
ssh -F ssh/config bindery-desk '/home/bindery/incoming/collection/read-book'
Você deve ler a edição 2 da mesa, a nova folha, a nota receptora original e a saída atualizada do leitor. Um espelhamento de toda a raiz com --delete poderia apagar a nota. Nunca o use para retirar essa única lista gerenciada.
Repita as mesmas simulações:
rsync -anci -e 'ssh -F ssh/config' --exclude='*.tmp' old/collection/ bindery-desk:/home/bindery/incoming/collection/
rsync -anci -e 'ssh -F ssh/config' --delete old/generated/ bindery-desk:/home/bindery/incoming/generated/
Não devem restar alterações de arquivos. Repetir é seguro dentro do escopo declarado, mas uma exclusão futura na origem ainda exige decidir deliberadamente qual diretório de destino é gerenciado. rsync sozinho não recupera a edição original; use um backup separado quando precisar de histórico.
Resumo
Você entregou uma coleção utilizável, preservou sua configuração oculta e as permissões do leitor, além da nota da mesa receptora. Uma segunda sincronização atualizou os arquivos gerenciados e removeu uma lista aposentada somente no escopo declarado. A sincronização tem direção; ela não oferece backup com histórico de versões nem mescla conflitos.



