Usando o comando cp no shell do Linux, como copio um diretório inteiro para outro diretório?

Usando o comando cp no shell do Linux, como copio um diretório inteiro para outro diretório?

Eu tenho um diretório, digamos, "work": ~/work/ Este diretório contém algumas subpastas (d1, d2...) e arquivos nessas subpastas. Quero fazer um backup na mesma pasta, então ficaria assim: ~/backup/work/ Porém, quando utilizo cp -r ./work ./backup a pasta "work" não é copiado, apenas seus subfoders (então agora é ~/backup/d1 ~/backup/d2...) Alguma ideia de como fazer isso funcionar? Sou muito novo no Shell, então estou faltando alguma coisa :)

Responder1

cp não criará diretórios principais; ao ver um caminho que não existe, assumirá que será o novo nome do diretório que está sendo copiado.

Tente copiar para um diretório que já existe: mkdir workprimeiro, depois cp -r work backup.

Responder2

Tentar

rsync -avz ./work ./backup

Responder3

cp -r ./work/ ./backup/

ou

cp -r ./work ./backup/work

Responder4

Se você estiver em um sistema Linux:

cp -rT --parents work backup/work

informação relacionada