Uma pasta de 1,7 GB, um ponteiro oculto e oito sessões abertas

Ler o original em inglês

migrationwindows-serverautomation

Imagem de capa: Uma pasta de 1,7 GB, um ponteiro oculto e oito sessões abertas

O disco C: do nosso computador tinha 230 MB livres de 231 GB. É menos espaço do que muitas fotos de celular ocupam. Um lugar óbvio para liberar espaço era uma pasta de 1,7 GB com registros de conversas (Ler em inglês) e um perfil de testes do navegador. Ela era grande o bastante para fazer diferença, e a gente tinha outro disco com bastante espaço sobrando.

De início, o trabalho parecia o de levar uma caixa de um armário lotado para a garagem. Queríamos colocar a pasta no disco G: e deixar uma placa no lugar antigo, para que os programas que esperavam encontrá-la no C: continuassem encontrando. O Windows chama essa placa de junction. É um ponteiro oculto que leva o programa do endereço da pasta antiga para o novo.

Isso funcionaria bem se ninguém estivesse usando a pasta. Mas estavam. Cerca de oito sessões ativas ainda acrescentavam dados aos próprios registros de conversa lá dentro. Em termos do dia a dia, estávamos tentando mudar um arquivo de lugar enquanto várias pessoas ainda estavam com as gavetas abertas, guardando papéis nelas.

O plano que falhou

O primeiro plano foi o mais tentador. Copiar tudo para o disco novo, apagar a pasta antiga e colocar o ponteiro no lugar dela. Não funcionou, e não deveria mesmo funcionar. O Windows não deixou remover a pasta antiga porque havia arquivos dentro dela em uso. A primeira tentativa custou tempo justamente quando o disco quase cheio (Ler em inglês) já exigia atenção. Ela também revelou um problema pior do que um comando recusado.

Trocar a placa de um arquivo não faz quem está com a gaveta aberta passar a usar outro arquivo de repente. Um programa abre um arquivo uma vez e continua trabalhando com esse mesmo arquivo aberto. Se tivéssemos conseguido forçar a mudança da pasta com aquelas sessões ativas, as sessões mais antigas poderiam continuar gravando no lugar antigo, enquanto os arquivos recém-abertos iriam para o G:. Os registros ficariam divididos entre dois lugares. Nada necessariamente avisaria que isso aconteceu.

O risco era essa divisão sem aviso. Um erro visível incomoda, mas pelo menos diz para você parar. Dois conjuntos de registros que parecem normais podem fazer você acreditar que tudo foi movido quando uma parte da história ainda está sendo escrita em outro lugar.

O que tiramos disso é mais simples do que a linguagem de computador em volta: mudar o endereço de uma pasta só ajuda os programas que abrem a pasta depois. Isso não muda o lugar onde um arquivo já aberto está sendo gravado.

Fazendo com tudo parado

Quando entendemos isso, deixou de ser um truque esperto de computador e virou uma questão de ordem. A pasta precisava estar parada. Em português claro, tudo o que a usava precisava ser fechado antes. Não íamos fazer uma mudança delicada na mesma janela agitada em que o problema de armazenamento tinha aparecido.

Então preparamos um pequeno conjunto de instruções para rodar depois, quando todas as sessões ativas estivessem fechadas. Antes de mexer em qualquer coisa, ele verificava três pontos. Primeiro, parava se o programa em questão ainda estivesse rodando. Segundo, parava se já existisse uma pasta no destino novo, porque isso poderia significar que uma mudança anterior tinha sido interrompida. Terceiro, parava se a pasta antiga já fosse um ponteiro, porque isso indicaria que a mudança já tinha acontecido.

Só depois dessas verificações ele copiava os arquivos e comparava o número de arquivos nos dois lugares. Ele não jogava fora o original imediatamente. Em vez disso, renomeava a pasta antiga como backup, colocava o ponteiro no lugar e restaurava o backup se essa etapa falhasse. A cópia original só seria removida à mão depois de confirmarmos que o novo arranjo funcionava.

Esse backup importa pelo mesmo motivo de guardar a chave antiga até ter certeza de que a nova abre a porta. Ele deixa um caminho de volta. As verificações transformam uma esperança, “acho que fechamos tudo”, em uma pergunta que o computador consegue responder antes de fazer uma mudança difícil de desfazer.

Evitando que a bagunça volte

Também cuidamos do motivo pelo qual o disco C: tinha enchido. Dois lugares do computador, um cache de downloads de programas e a área de arquivos temporários, ainda cresciam no C:. Redirecionamos os dois para o G: em uma mudança de configuração separada. Ela não trazia o mesmo risco, porque não tentava mudar de lugar arquivos que sessões ativas já tinham abertos. Isso impediu que a bagunça nova voltasse ao mesmo armário apertado.

Uma mudança pode parecer simples enquanto ainda há trabalho acontecendo dentro dela. Antes de mudar o lugar de uma pasta compartilhada, de uma caixa de entrada, de uma planilha ou de um serviço, pergunte quem ainda está com isso aberto e qual é o caminho seguro de volta se o novo arranjo falhar. Feche primeiro tudo o que usa o item, guarde o original até o novo arranjo ser confirmado e faça a própria mudança verificar suas condições iniciais.

Receba a próxima história de IA no dia a dia

Histórias em linguagem simples sobre usar IA para facilitar o trabalho do dia a dia. Um e-mail curto quando sair uma nova, sem jargão.