como excluir um arquivo maior (por exemplo, 180G) no sistema unix?

0

Por causa de alguns motivos, minhas máquinas servidoras tinham arquivos muito grandes (por exemplo, : 180G) , Como posso excluir esses arquivos rapidamente?

    
por netkong 25.11.2015 / 13:40

2 respostas

2

rm exclui arquivos independentemente do tamanho deles.

Arquivos muito grandes podem demorar um pouco para serem excluídos, porque o sistema de arquivos precisa marcar todos os blocos que o arquivo usou como disponíveis. Esse custo tem que ser pago uma vez ou outra ; se você não pagar no momento da exclusão, pagará quando os arquivos forem criados. O Zfs oferece uma maneira de adiar o custo de excluir uma árvore de diretórios , mas a maioria dos sistemas de arquivos não possui os recursos complexos necessários.

A exclusão de arquivos grandes nem demora muito tempo. Se isso ainda for demais para você e você quiser começar a digitar outro comando imediatamente, poderá executar rm em segundo plano ( rm /path/to/file & ). Se você deseja criar um novo arquivo com o mesmo nome, não é necessário executar rm , basta sobrescrever o arquivo. Se você precisar excluir o arquivo, por exemplo, para excluir o diretório que o contém, primeiro mova o arquivo para outro diretório no mesmo sistema de arquivos (instantâneo: mover um arquivo dentro de um sistema de arquivos é apenas a entrada de diretório), em seguida, remova-o em sua nova localização.

Se o que você queria era disponibilizar o espaço instantaneamente, você não pode, como expliquei acima. Se você quiser recuperar parte do espaço mais rapidamente do que o tempo para excluir todo o arquivo, poderá truncá-lo para um tamanho menor, por exemplo, truncate -s -1G /path/to/file para remover o último GB do tempo e, em seguida, remova o arquivo. O comando truncate é do GNU coreutils; Se sua máquina não estiver rodando Linux, você provavelmente não tem, mas você pode usar dd , por exemplo, dd if=/dev/null of=/path/to/file bs=1024k seek=180000 para truncar para 180000 MB.

    
por 26.11.2015 / 01:28
0

A exclusão de um arquivo inturn é convertida em vfs_unlink e, em seguida, na chamada específica do sistema fs_unlink para ser executada. Precisamente, essas chamadas chegam ao diretório pai e removem o inode do arquivo correspondente, fazendo com que o dentry desse arquivo fique negativo. Os dados no disco (qualquer que seja o seu tamanho) permanecem como estão, com apenas uma alteração: o bloco onde está residindo é movido para o banco de blocos livres. Isso significa que a qualquer momento, agora, os dados do arquivo que você acabou de excluir serão sobrescritos pelo kernel.

Então, em suma, apagar um arquivo de qualquer tamanho é deletar seu inode do sistema de arquivos no linux e outros sistemas direcionados e vai demorar o mesmo tempo.

    
por 26.11.2015 / 01:56