Quando eu movo um arquivo para um diretório diferente na mesma partição, os dados do arquivo realmente são movidos no disco?

4

Eu pude ver isso nos dois sentidos. Se o sistema de arquivos armazena sua estrutura de diretórios e lista de arquivos em cada diretório e, em seguida, aponta para o local do disco de cada um dos arquivos, ele não deve exigir que os dados do arquivo sejam movidos no disco para "mover" um arquivo . Por outro lado, eu pude ver o 'movimento' sendo implementado copiando o arquivo, verificando a cópia e, em seguida, excluindo o original, se a cópia fosse finalizada. A resposta depende do tipo de sistema de arquivos?

    
por Hart Simha 30.07.2013 / 14:08

2 respostas

2

Sim, isso depende do tipo de sistema de arquivos. Mas todos os sistemas de arquivos modernos que conheço usam algum tipo de esquema de ponteiros. Os sistemas de arquivos linux / unix (como ext2, ext3, ext4, ...) fazem isso com o INODES.

Você pode usar ls -i em um arquivo para ver qual inode-number é referenciado pelo nome do arquivo (residindo como meta-informação na entrada de diretório). Se você usar mv nesses sistemas de arquivos, a ação resultante será um novo ponteiro dentro do sistema de arquivos ou um cp / rm se você cruzar as bordas do FS.

    
por 30.07.2013 / 15:52
6

Não, o arquivo não é copiado, ele permanece onde está. O que muda é a listagem do diretório. É por isso que mover até mesmo o mais gigantesco dos arquivos na mesma partição não leva tempo.

Manter os arquivos contíguos nos discos tradicionais é vantajoso, já que faz com que a leitura e gravação sejam feitas com mais rapidez - a cabeça não precisa pular ao redor do disco. No entanto, não há necessidade de manter diretórios contíguos no disco.

I could see the 'move' being implemented by copying the file, checking the copy, and then deleting the original if the copy checks out. Does the answer depend on the type of filesystem?

Eu não sou especialista em sistemas de arquivos, mas não posso imaginar que haja algum normal, pois isso seria uma grande penalidade de desempenho e também aumentaria o desgaste do hardware.

    
por 30.07.2013 / 14:28