Os comandos `cp` (cópia) e` ln` (link) são comandos do Unix usados para criar maneiras adicionais de acessar arquivos, mas o fazem de maneiras fundamentalmente diferentes. Compreender essa diferença é crucial para evitar comportamentos inesperados.
`cp` (cópia): *
cria uma duplicata: `cp` cria uma cópia completamente separada do arquivo. Esta cópia ocupa seu próprio espaço no disco. As alterações feitas no arquivo original não afetarão a cópia e vice-versa.
*
Tamanho do arquivo: O arquivo copiado terá o mesmo tamanho que o original.
* Metadados
: Embora alguns metadados (como permissões e registros de data e hora) possam ser copiados, nem sempre é uma replicação perfeita. O número do inode (um identificador exclusivo para um arquivo no sistema de arquivos) será diferente.
* Uso
: Use `cp` quando precisar de uma versão independente e separada de um arquivo. Se você modificar um, o outro permanecerá intocado.
`ln` (link): *
cria um ponteiro: `ln` cria um link, que é essencialmente um ponteiro para o arquivo original. Ele não cria uma nova cópia dos dados; Em vez disso, cria uma nova entrada de diretório que aponta para o mesmo inode que o arquivo original.
*
Tamanho do arquivo: O link em si ocupa muito pouco espaço em disco. O tamanho é essencialmente o tamanho do nome do link.
* Metadados
: O link herda alguns metadados do arquivo original.
*
Dois tipos de links: *
links difíceis: Só pode ser criado para arquivos (não diretórios) e vários links rígidos apontam para os mesmos dados. A exclusão de um link rígido não exclui os dados originais, a menos que * todos os links rígidos sejam excluídos.
*
Links simbólicos (links soft): Pode apontar para arquivos * ou * diretórios. Eles contêm o caminho para o arquivo original. A exclusão de um link simbólico não afeta o arquivo original. Se o arquivo original for movido ou excluído, o link simbólico ficará quebrado.
Aqui está uma tabela resumindo as principais diferenças: | Recurso | `cp` (cópia) | `ln` (link) |
| ---------------- | -------------------- | ------------------------ |
| Ação | Cria uma duplicata | Cria um ponteiro |
| Espaço de disco | Usa espaço adicional | Espaço extra mínimo |
| Alteração de dados | Cópias independentes | As mudanças afetam todos os links (links rígidos) |
| Exclusão de arquivo | Excluir uma cópia não afeta os outros | Excluir todos os links difíceis exclui dados; Links simbólicos ficam quebrados |
| Tipo de arquivo | Funciona em arquivos e diretórios | Links difíceis:apenas arquivos; Links simbólicos:arquivos e diretórios |
Exemplo: Digamos que você tenha um arquivo chamado `mydocument.txt`.
* `cp mydocument.txt mydocument_copy.txt` cria uma cópia completamente separada.
* `ln mydocument.txt mydocument_link` cria um link rígido. Ambos `mydocument.txt` e` mydocument_link` consulte os mesmos dados.
* `ln -s mydocument.txt mydocument_symlink` cria um link simbólico. `mydocument_symlink` aponta para` mydocument.txt`.
Em essência:use `cp` quando precisar de uma cópia verdadeira; Use `ln` quando quiser vários nomes apontando para os mesmos dados (links rígidos) ou um atalho conveniente (links simbólicos). Escolha o comando que melhor atenda às suas necessidades com base em se você precisa de cópias independentes ou referência eficiente.