É arriscado renomear a pasta com 180 GB com o mv
comando?
Temos uma pasta /data
que contém 180 GB.
Queremos renomear a /data
pasta para /BD_FILES
com o mv
comando
É seguro fazer isso?
É arriscado renomear a pasta com 180 GB com o mv
comando?
Temos uma pasta /data
que contém 180 GB.
Queremos renomear a /data
pasta para /BD_FILES
com o mv
comando
É seguro fazer isso?
Respostas:
Alterar o nome em uma pasta é seguro, 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
), você precisará fazer algo diferente de um simples, mv
pois mv /data /BD_FILES
moveria os dados para a partição raiz (o 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 remontar o sistema de arquivos no local renomeado.
Em outras palavras,
umount /data
mv /data /BD_FILES
(supondo que /BD_FILES
ainda não exista, nesse caso, remova-o primeiro)/etc/fstab
, alterando o ponto de montagem de/data
para/BD_FILES
mount /BD_FILES
Isso não envolve copiar nenhum arquivo, apenas altera o nome do diretório que atua como o ponto de montagem do sistema de arquivos.
Se a renomeação do diretório envolver movê-lo para um novo sistema de arquivos (o que seria o caso se estivesse /data
em um disco enquanto/BD_FILES
estiver em outro disco, é uma coisa comum a fazer se você estiver movendo as coisas para uma partição maior, por exemplo) , Recomendo copiar os dados e deixar 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 rsync
manual para que isso faz e o que não faz (não preserva os links físicos, por exemplo).
Depois que a pasta é renomeada, você também precisa garantir que os procedimentos existentes (programas e usuários usando a pasta, backups etc.) estejam cientes da alteração de nome.
mv
apenas fazer uma rename
chamada do sistema, mas devido a circunstâncias, ainda não se percebeu que copiará os arquivos e excluirá o original. Se eu precisar ter certeza absoluta de que apenas uma rename
chamada do sistema é feita e mv
não fará algo "inteligente" nas minhas costas, abro um shell Python e o uso os.rename
.
mkdir /BD_FILES && mount -M /data /BD_FILES && rmdir /data
rsync
é que é reinicializável.
rsync -a
preserva quase todos os metadados, mas não links físicos, ACLs ou atributos estendidos (adicione -HAX
para isso).
rename
comandos diferentes com comportamento diferente. Eu acho que isso é motivo suficiente para não usar o rename
comando quando você quer ter certeza do que ele fará.
Você não está renomeando todos os arquivos no diretório, está renomeando um arquivo em /. Isso é porque:
Portanto, renomear um diretório, não importa quantos arquivos ou quantos dados contenham, é trivial.
Se você apenas 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 precisarão ser copiados mv
. Diferenças nos recursos do sistema de arquivos, como tamanho máximo do arquivo, limitações nos nomes dos arquivos, etc., podem causar problemas. Para evitar problemas, arquivos primeira cópia ( cp
, rsync
...) e após a cópia for concluída com êxito, remova os arquivos no local original.
* No entanto, existem alguns casos de canto, por exemplo mencionados na seção BUGS no man 2 rename
Como já foi dito, renomear uma pasta não representa um 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 referenciam o local original podem ser interrompidos por essa alteração e, se os caminhos forem armazenados em um banco de dados, por exemplo, atualizá-los pode ser um grande trabalho.
Uma coisa que você pode fazer é criar um link simbólico para o novo nome de diretório, mas deixe o nome antigo no local por um tempo. Isso lhe dará tempo para avaliar o impacto dessa mudança. Você pode remover temporariamente o nome antigo, verificar se há algum problema e, se houver, 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
mv thing1 thing2 ; ln --symbolic ./thing2 thing1
. Dessa forma, tenho o novo nome e posso testar facilmente a ausência do antigo excluindo o link simbólico.
Renomear é atômico. O único risco razoável é que mv
decida copiar tudo por algum motivo e que trava na metade. Se você tem GNU mv
, mv -T
removerá esse risco.
mv -T
informa mv
que está sendo movido para uma não-pasta; o que fará com que ele se recuse a fazer o mkdir()
que, por sua vez, fará com que falhe se mover uma pasta e decidiu copiar por algum motivo.
Eu estava envolvido em sacudir bugs 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 deseja remover isso da partição raiz.
mv
com a-i
opção