Info no cp --preserve = links

5

Estou tentando entender o que o cp --preserve=links faz quando usado sozinho, dos meus testes parece que ele copia um arquivo normal normalmente e desreferencia links simbólicos, mas parece que ele tem o mesmo efeito de cp -L quando usado em um único arquivo.

Isso é verdade ou há algo que me falta?

    
por Matt 18.08.2017 / 16:16

2 respostas

7

A opção --preserve=links não se refere a links simbólicos, mas a links físicos. Ele solicita que cp preserve qualquer link físico existente entre dois ou mais arquivos que estão sendo copiados.

$ date > file1
$ ln file1 file2
$ ls -1i file1 file2
6034008 file1
6034008 file2

Você pode ver que os dois arquivos originais possuem link físico e seu número de inode é 6034008.

$ mkdir dir1
$ cp file1 file2 dir1
$ ls -1i dir1
total 8
6035093 file1
6038175 file2

Você pode ver agora que, sem --preserve=links , suas cópias têm dois números de inode diferentes: não há mais um link físico entre os dois.

$ mkdir dir2
$ cp --preserve=links file1 file2 dir2
$ ls -1i dir2
total 8
6089617 file1
6089617 file2

Você pode ver agora que, com --preserve=links , as duas cópias ainda têm hard-link, mas seu número inode é 6089617, que não é o mesmo que o número inode dos arquivos originais (ao contrário de cp --link ter feito).

    
por 18.08.2017 / 19:18
0

Estou recebendo algumas informações conflitantes depois de testar e ler a página do manual. Eu apenas fiz alguns testes e encontrei o seguinte.

[root@el7-1 dest]# ls -l
total 0
lrwxrwxrwx. 1 root root 16 Aug 18 16:51 test1.txt -> ../src/test1.txt

Os seguintes comandos todos deferência o link

cp test1.txt test2.txt 
cp -L test1.txt test2.txt 
cp --preserve=link test1.txt test2.txt 

O comando a seguir copia o próprio link simbólico

cp -P test1.txt test2.txt 
    
por 18.08.2017 / 17:01