Se a cópia for feita em algum terminal shell (ou seja, bash), cp
poderá ser explicitamente solicitado a copiar o arquivo com o qual um link aponta --dereference
, em vez do próprio link. O comportamento padrão de cp
é copiar arquivos seguindo seus links, mas muitos navegadores de arquivos gráficos parecem ter um comportamento padrão de tentar copiar links e geralmente manter a maioria dos atributos.
man cp
-a, --archive
same as -dR --preserve=all
-d same as --no-dereference --preserve=links
-L, --dereference
always follow symbolic links in SOURCE
Exemplo
touch SomeFile.txt
echo "some content" > someFile.txt
ln -s -T someFile.txt someLink
echo "Some content for the test file." > someLink
mkdir someDirectory
ln -s -T someDirectory someDirLink
O fato de someLink
ser um link é mostrado pelo l
sinalizador na primeira posição da saída da listagem (e `d 'designa um diretório).
ls -l
drwxrwxr-x. 2 user group 4096 Aug 17 17:17 someDirectory
lrwxrwxrwx. 1 user group 13 Aug 17 17:17 someDirLink -> someDirectory
-rw-rw-r--. 1 user group 32 Aug 17 17:01 someFile.txt
lrwxrwxrwx. 1 user group 12 Aug 17 17:12 someLink -> someFile.txt
O arquivo contém o conteúdo e o link aponta para o arquivo, mas pode ser usado praticamente de qualquer maneira que o arquivo possa ser. (Observe o tamanho do arquivo de link versus o tamanho do arquivo de texto: 32 bytes vs 12 bytes.)
cat someFile.txt
Some content for the test file.
cat someLink
Some content for the test file.
Primeiro, copiando o link para um diretório. Em seguida, copie o arquivo para o diretório, através do link (O abaixo também mostra que os links de diretório funcionam de maneira semelhante aos links de arquivo.):
cp -a someLink someDirLink/newCopy
cp -L someLink someDirectory/newCopy.txt
ll -l someDirLink/
lrwxrwxrwx. 1 user group 12 Aug 17 17:12 newCopy -> someFile.txt
-rw-rw-r--. 1 user group 32 Aug 17 17:36 newCopy.txt
Cuidado
Os links podem ser feitos para apontar para um caminho completo ou relativo. Como este exemplo usou uma ligação com base no caminho relativo do destino no mesmo diretório que o link que está sendo criado, o link foi quebrado quando foi copiado para um novo diretório.
cat someDirLink/newCopy
cat: someDirLink/newCopy: No such file or directory
cat someDirLink/newCopy.txt
Some content for the test file.