Comando cp -a e cp -p

Boa tarde galera eu quero saber qual a real diferença entre usar o:

cp -a e o cp -p

Qual a diferença?

Eu sei que os dois preservam os atributos do arquivo, mas qual é o mais aconselhável na hora de copiar um arquivo sem perder a data de criação, modificação?

Eu uso o cp -a, porém fico na dúvida se não deveria usar o cp -p. Posso usar os dois juntos?

1 curtida

Olhando o manual, o cp -a diz que preserva tudo:

-a, --archive
              same as -dR --preserve=all

Já o cp -p preserva “somente” três coisas, sendo elas: modo, proprietário e a data e hora
-p same as --preserve=mode,ownership,timestamps
Peço ajuda ao “universitário” @RuKsu nessa discussão :sweat_smile:

1 curtida

Se você quiser fazer um “backup” perfeito, cp -a é a melhor opção. Ele conserva a maior quantidade de coisas possíveis, e copia pastas sem reclamar.

Indo por partes nas opções ao qual o cp -a usa:

  • -R → copia pastas. Por padrão, o cp ignora pastas (e cp -p vai fazer o mesmo se você não especificar cp -pR).
  • -d → copia links simbólicos (“atalhos”) em si, e não o arquivo ao qual o “atalho” faz referência. Exemplo prático:
$ touch arq1
$ ln -s arq1 link1
$ ls -l
total 0
-rw-r--r-- 1 carlos carlos 0 jul  4 23:33 arq1
lrwxrwxrwx 1 carlos carlos 4 jul  4 23:33 link1 -> arq1
$ cp link1 arq2
$ cp -d link1 link2
$ ls -l
total 0
-rw-r--r-- 1 carlos carlos 0 jul  4 23:33 arq1
-rw-r--r-- 1 carlos carlos 0 jul  4 23:33 arq2
lrwxrwxrwx 1 carlos carlos 4 jul  4 23:33 link1 -> arq1
lrwxrwxrwx 1 carlos carlos 4 jul  4 23:33 link2 -> arq1

Veja que o arquivo criado pelo cp -d é um atalho para o arq1, enquanto o criado pelo cp “puro e simples” é um arquivo mesmo.

  • --preserve=all é o mais chato de explicar, mas resumidamente, ele copia todos os metadados do arquivo. O -p sozinho copia apenas o que foi citado pelo @JG22.
3 curtidas

:wave:t2:

Primeiro, @JG22 obrigado por me chamar nesta investigação :male_detective:t2: :pray:t2:
Eu fiquei na dúvida também… o atributo -a pega tudo e o -p parece que não pega links simbólicos.
Mas é melhor aguardarmos mais detalhes.

:vulcan_salute:t2:

1 curtida

Eu estou preferindo usar o rsync -av --progress. Porém usando o cp ou rsync a data de criação do arquivo muda para a data em que a cópia foi feita. Me parece que mesmo usando a opção -a dos comandos as datas de modificação, criação não são preservadas.

1 curtida