renomear uma pasta enorme: é arriscado?

17

É arriscado renomear a pasta com 180 GB com o comando mv ?

Temos uma pasta /data que contém 180 GB.

Queremos renomear a pasta /data para /BD_FILES com o comando mv .

É seguro fazer isso?

    
por yael 24.09.2017 / 18:56

5 respostas

69

A alteração do nome em uma pasta é segura, se permanecer no mesmo sistema de arquivos.

Se for um ponto de montagem ( /data parece que poderia ser um ponto de montagem para mim, verifique isso com mount ), então você precisa fazer algo diferente de apenas simples mv desde mv /data /BD_FILES moveria os dados para a partição raiz (que pode não ser o que você quer que aconteça).

Você deve desmontar o sistema de arquivos, renomear o diretório agora vazio, atualizar /etc/fstab com o novo local para este sistema de arquivos e, em seguida, remontar o sistema de arquivos no local renomeado.

Em outras palavras,

  1. umount /data
  2. mv /data /BD_FILES (assumindo que /BD_FILES já não existe, nesse caso, mova-o para fora do caminho primeiro)
  3. atualize /etc/fstab , alterando o ponto de montagem de /data para /BD_FILES
  4. mount /BD_FILES

Isso não envolve a cópia de nenhum arquivo, apenas altera o nome do diretório que atua como ponto de montagem para o sistema de arquivos.

Se a renomeação do diretório envolver a mudança para um novo sistema de arquivos (o que seria o caso se /data estivesse em um disco enquanto /BD_FILES estivesse em outro disco, uma coisa comum a ser feita se você estiver em movimento coisas para uma partição maior, por exemplo), eu recomendaria copiar os dados deixando o original intacto até que você possa verificar se a cópia está correta. Você pode fazer isso com

rsync -a /data/ /BD_FILES/

por exemplo, mas veja o manual rsync para o que isso faz e não faz (não preserva links físicos, por exemplo).

Quando a pasta for renomeada, você também precisará garantir que os procedimentos existentes (programas e usuários que usam a pasta, backups, etc.) estejam cientes da alteração do nome.

    
por 24.09.2017 / 19:19
15

Você não está renomeando todos os arquivos no diretório, está renomeando um arquivo em /. Isso porque:

  1. diretórios são arquivos e
  2. o sistema de arquivos realmente se importa com o inode, não com o texto real.

Assim, renomear um diretório, não importa quantos arquivos ou quantos dados estejam nele, é trivial.

    
por 24.09.2017 / 19:17
13

Se você acabou de renomear (origem e destino no mesmo sistema de arquivos), é simplesmente uma renomeação de uma entrada de diretório. Ele é bem-sucedido e o diretório tem um novo nome ou falha, caso em que nada muda * .

Se a origem e o destino estiverem em sistemas de arquivos diferentes, os dados precisam ser copiados por mv . Diferenças nos recursos do sistema de arquivos, como tamanho máximo do arquivo, limitações nos nomes de arquivos, etc., podem causar problemas. Para evitar problemas, primeiro copie os arquivos ( cp , rsync ,…) e, após a conclusão da cópia, remova os arquivos no local original.

* No entanto, existem alguns casos, por exemplo, mencionados na seção BUGS em homem 2 renomeie

    
por 24.09.2017 / 19:11
8

Como outros já disseram, renomear uma pasta não representa risco inerente ao conteúdo. Mas há um tipo diferente de risco que você pode querer considerar.

Procedimentos, scripts, atalhos definidos pelo usuário e configurações existentes que fazem referência ao local original podem ser interrompidos por essa alteração e, se os caminhos forem armazenados em um banco de dados, por exemplo, atualizá-los poderá ser um grande trabalho.

Uma coisa que você pode fazer é criar um link simbólico para o novo nome do diretório, mas deixe o nome antigo no lugar por um tempo. Isso lhe dará tempo para avaliar o impacto dessa mudança. Você pode remover temporariamente o nome antigo, ver se há algum problema e, se houver, basta recriar o nome antigo para que as pessoas possam continuar trabalhando enquanto você descobre o que precisa ser atualizado.

Um comando como este deve fazê-lo:     ln -s /data /BD_FILES

    
por 25.09.2017 / 01:52
3

Renomear é atômico. O único risco razoável é que mv decida copiar tudo por algum motivo e que falha a meio. Se você tiver o GNU mv , mv -T removerá esse risco.

mv -T informa ao mv que está se movendo para uma pasta que não é; o que fará com que ele se recuse a fazer mkdir() , o que fará com que ele falhe ao mover uma pasta e decidiu copiar por algum motivo.

Eu estava envolvido na agitação de bugs de mv -T enquanto trabalhava na minha tese de mestrado anos atrás. Costumava fazer a coisa errada em muitos casos extremos.

Por outro lado, você tem 180 GB de dados do usuário na partição raiz. Você provavelmente quer mover isso da partição raiz.

    
por 25.09.2017 / 17:31