Ensaiar a mudança da pasta localmente

LinuxBeginner
Pratique Agora

Introdução

Uma equipe de conservação está mudando Garden Atlas para uma nova mesa. A origem contém rascunhos privados e prévias temporárias; o destinatário já tem uma nota que não pode ser perdida. Seu resultado será uma coleção e uma lista utilizáveis, primeiro para hoje e depois para uma edição revisada.

Você precisa de familiaridade básica com o terminal. Este ambiente independente fornece duas pastas locais e um retrato da próxima edição. Você aprenderá direção, barras finais, simulações, filtros e escopo preciso de exclusão antes de aplicar as mesmas ideias por SSH no próximo laboratório.

Ensaiar os limites da coleção

Nesta etapa, você copiará a coleção de livros para a pasta receptora depois de comparar duas simulações seguras. Use Terminal durante todo o laboratório. SSH não é necessário aqui.

A mesa de conservação está mudando Garden Atlas. old/collection contém textos, uma configuração de leitura oculta e um leitor executável. old/generated contém listas descartáveis da mesa. old/personal é privado. A nova mesa já tem receiver-note.txt, que pertence à equipe receptora e deve sobreviver a cada atualização. revision/ contém a próxima edição fornecida para uso posterior.

cd muda de diretório. ls -a inclui entradas ocultas; cat lê texto sem editar. Comece consultando a nota da equipe receptora:

cd /home/labex/project/folder-move
ls -a old/collection
cat new/receiver-note.txt

A nota diz Received by Mira. Keep the west shelf clear. O catálogo antigo já presente está incompleto. O destino não está vazio de propósito.

rsync copia do primeiro caminho para o segundo. -a significa modo de arquivamento: copia diretórios recursivamente e preserva horários de modificação, permissões executáveis e outros atributos suportados. Uma conta receptora normal não pode preservar donos arbitrários da origem; este curso verifica bytes e permissão de execução, não propriedade entre sistemas, ACLs ou atributos estendidos. -n faz uma simulação sem alterar arquivos. -i lista as mudanças propostas item por item.

A exclusão entre aspas descarta nomes terminados em .tmp em qualquer profundidade; as aspas impedem o shell de expandir o padrão antes que rsync o receba.

Primeiro simule o próprio diretório de origem, sem barra final:

rsync -ani --exclude='*.tmp' old/collection new/collection/

Procure um collection/ adicional proposto dentro da coleção de destino. Esse aninhamento colocaria o leitor no lugar errado.

Agora simule o conteúdo da origem com barra final:

rsync -ani --exclude='*.tmp' old/collection/ new/collection/

Agora os caminhos ficam diretamente sob new/collection/, incluindo .bindery.conf, read-book e texts/. Arquivos iniciados por ponto são incluídos porque rsync recebe o próprio diretório; um curinga do shell como old/collection/* omitiria entradas ocultas. Arquivos comuns novos geralmente mostram >f+++++++++; outras marcas descrevem atributos alterados. As linhas da simulação são propostas, não uma coleção entregue.

Remova somente n para executar a transferência escolhida:

rsync -ai --exclude='*.tmp' old/collection/ new/collection/
new/collection/read-book

O leitor mostra reading_order=catalog,treatment, seguido do catálogo de Garden Atlas e do tratamento com dobradiças de papel. A execução direta demonstra que o leitor copiado funciona com seus caminhos relativos de texto e sua configuração oculta. Se a execução for negada, examine os modos de origem e destino com ls -l e repita o modo de arquivamento a partir da origem preparada. Não substitua o leitor por saída fixa.

Se executou a cópia aninhada por engano, examine ls new/collection/collection antes de remover apenas esse duplicado com rm -r new/collection/collection. rm -r remove permanentemente o diretório indicado e seu conteúdo. Nunca encurte essa limpeza para new, que também contém a nota receptora. Depois repita a transferência correta.

Entregar a lista da mesa sem apagar notas

Nesta etapa, você concluirá a primeira entrega copiando a lista gerada separada. Permaneça em Terminal, em /home/labex/project/folder-move.

A coleção e os arquivos gerados têm responsabilidades diferentes. A origem gerencia cada arquivo sob generated/; o destinatário é dono da nota na raiz. Selecione apenas o segundo diretório gerenciado em vez de copiar todo old/, o que também divulgaria personal/.

rsync -ani old/generated/ new/generated/
rsync -ai old/generated/ new/generated/
cat new/generated/current.txt
cat new/receiver-note.txt

A lista diz Garden Atlas | desk edition 1. A lista obsoleta ainda faz parte intencionalmente da edição 1. A nota receptora não mudou. Execute novamente o leitor entregue:

new/collection/read-book

Não foi necessário --delete. Por padrão, rsync mantém arquivos exclusivos do destino. Uma exclusão impede a transferência; não remove um temporário já presente. Se copiou uma prévia por engano, examine e remova somente o arquivo indesejado exato, como rm new/collection/preview.tmp; depois repita a sincronização filtrada. Nunca limpe a raiz receptora para passar na verificação.

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, no mesmo espaço de trabalho.

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 --exclude='*.tmp' old/collection/ new/collection/
rsync -aci --exclude='*.tmp' old/collection/ new/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 --delete old/generated/ new/generated/
rsync -aci --delete old/generated/ new/generated/
cat new/generated/current.txt new/collection/texts/addendum.txt new/receiver-note.txt
new/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 --exclude='*.tmp' old/collection/ new/collection/
rsync -anci --delete old/generated/ new/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.