Como o linux manipula um comando move

12

Como o Linux manipula um comando de movimento sob o capô?

Digamos que eu mude meu diretório home

/home/me

e eu movo isso para outro diretório

/home/foo/me

Como são todos os caminhos de arquivos e diretórios em me alterados? Eu sei que meu Desktop dir em me agora é /home/foo/me/Desktop , bem como Documents /home/foo/me/Documents , mas o sistema de arquivos atualiza explicitamente cada caminho em me para refletir a alteração? Isso não parece muito eficiente e provavelmente não é isso.

Onde posso obter mais informações sobre isso?

    
por Jeff 13.03.2014 / 10:24

2 respostas

21

Para entender como ele move as pastas, você pode precisar entender um pouco sobre o sistema de arquivos no linux. Todos os arquivos e pastas são armazenados como parte de uma estrutura de dados chamada " inode ". Cada arquivo tem um número inode, o mesmo acontece com as pastas.

Para ver o inode da sua pasta, use o comando ls -ial foldername . A primeira coluna mostra o número do inode do arquivo. Para cada pasta, há dois nomes exclusivos . e .. , representando o diretório próprio e o diretório pai respectivamente.

Você pode tentar fazer uma experiência para mover um diretório (digamos, / home / me / source) com subdiretórios e arquivos para outro diretório (por exemplo, / home / me / somewhere / else). O número de inode de / home / me / source e todo o seu conteúdo permanece o mesmo antes e depois de se mover. A única diferença é o número de inode de .. , que originalmente compartilha o número de inode de / home / me e agora se torna o número de inode de / home / me / somewhere / else. No texto simples, o Linux atualiza o link para o diretório source e pronto.

O conteúdo do disco rígido não é modificado de qualquer forma, apenas o índice de inodes é atualizado quando a pasta é movida. Este não é o caso se você mover a pasta para um local físico diferente.

    
por Kenneth L 13.03.2014 / 11:34
3

Se você estiver interessado em saber como programas como mv e cp funcionam, lembre-se de que eles são de código aberto e você pode obter a explicação mais precisa lendo o código. Aqui tem links para todos os principais utilitários. Especificamente, você pode encontrar mv aqui

    
por Hugo Buff 13.03.2014 / 10:51

Tags