O que acontece se você excluir um arquivo enquanto ele está se movendo de um sistema de arquivos (ext4) para outro (NTFS)?

0

isso tem me incomodado desde ontem. Eu estava usando o GNOME Files (Nautilus) para mover um arquivo de vídeo da pasta 'Downloads' para uma unidade NTFS. Agora, quando eu recortava e colava o arquivo, ele aparecia instantaneamente no destino (sistema de arquivos NTFS separado, usando ntfs-3g no mesmo disco rígido). Eu sei que quando você move arquivos de um sistema de arquivos para outro essencialmente copia e depois remove o arquivo (corrija-me se eu estiver errado) Mas eu 'desloco + excluo' o arquivo com pressa da fonte e momentos depois descobri que ainda movendo o arquivo para o sistema de arquivos NTFS, mesmo depois que eu deletei o arquivo da fonte e ele desapareceu. Depois que a barra móvel atingiu 100%, ela me deu um erro . Mas eu verifiquei o destino e o arquivo ainda foi movido para o destino e ele foi reproduzido corretamente.

Então, o que realmente aconteceu aqui? As operações de arquivo no Linux funcionam subseqüentemente para não interromper a operação de movimentação? Ou o arquivo que foi movido para o meu destino estava corrompido? ou foi o erro devido à última operação de cópia enquanto o arquivo estava em movimento porque a operação de movimento teria apagado o arquivo mesmo assim?

    
por Arslan Axton 28.02.2018 / 16:57

2 respostas

1

A exclusão de um arquivo não remove seus dados (conteúdo) - ele apenas remove os metadados informando que o arquivo está lá e marca o espaço em disco correspondente como "livre para uso posterior".

Mas o mais importante é que o sistema operacional manterá os metadados ao redor pelo tempo que for necessário. Mesmo depois de desvincular o arquivo de seu diretório (ou de todos os diretórios se ele tiver vários hardlinks), o sistema operacional não excluirá o arquivo real, desde que pelo menos um processo o mantenha aberto. Então o arquivo ainda está lá  simplesmente sem nome (mas ainda ocupando seu espaço) durante o resto da operação de cópia.

Eu fiz dizer "operação de cópia" porque os computadores não podem mover fisicamente os dados entre os discos - primeiro o arquivo é copiado para o destino, então o arquivo original é excluído. Na verdade, é por isso que você recebeu a mensagem de erro: o gerenciador de arquivos usa duas operações separadas (copiar e excluir); a cópia foi bem-sucedida, mas a exclusão falhou (porque você já tinha excluído)

    
por 28.02.2018 / 17:12
2

No Linux, você pode excluir arquivos abertos na maioria dos casos. Isso fará com que o arquivo desapareça das listagens de diretórios. O espaço ocupado no arquivo, porém, só será liberado depois que o arquivo não estiver mais em uso.

O que falhou no seu caso foi apenas o último passo de uma operação de movimentação: Remover o arquivo / diretório de origem.

    
por 28.02.2018 / 17:06