Estou procurando a diferença entre cp -r
e cp -a
. O que significa "recursivo" em termos de cópia de arquivos de uma pasta?
Estou procurando a diferença entre cp -r
e cp -a
. O que significa "recursivo" em termos de cópia de arquivos de uma pasta?
Respostas:
Recursivo significa que cp
copia o conteúdo dos diretórios e, se um diretório tiver subdiretórios, eles também são copiados (recursivamente). Sem -R
, o cp
comando ignora diretórios. -r
é idêntico ao -R
Linux, difere em alguns casos extremos em outras variantes do Unix.
Por padrão, cp
cria um novo arquivo que possui o mesmo conteúdo que o arquivo antigo e as mesmas permissões, mas restrito pelo umask ; a cópia é datada do momento da cópia e pertence ao usuário que está fazendo a cópia. Com a -p
opção, a cópia tem o mesmo horário de modificação, o mesmo horário de acesso e as mesmas permissões que o original. Ele também possui o mesmo proprietário e grupo que o original, se o usuário que está fazendo a cópia tiver permissão para criar esses arquivos.
A -a
opção significa -R
e -p
, além de algumas outras opções de preservação. Ele tenta fazer uma cópia o mais próximo possível do original: a mesma árvore de diretórios, os mesmos tipos de arquivo, o mesmo conteúdo, os mesmos metadados (horários, permissões, atributos estendidos etc.).
-r
porque -a
(para o a
rchive) é sempre o mais seguro e provavelmente o que você esperava que acontecesse.
-r
é porque você está em alguma variante unix diferente do Linux que não possui -a
, e geralmente você usaria cp -rp
. Or rsync -a
.
A opção -r ou -R para "recursivo" significa que ele copiará todos os arquivos, incluindo os arquivos dentro das subpastas.
A opção -a listada é igual a -dR, o que significa que preservará os links e copiará o conteúdo dos subdiretórios. O que significa preservar links é que ele não seguirá os links, pois está copiando recursivamente.