copie um diretório para outro diretório e crie diretórios intermediários

copie um diretório para outro diretório e crie diretórios intermediários

Eu gostaria de copiar tudo/usr/share/zoneinfo/diretório em /var/www/clients/client1/web5/./usr/share/zoneinfo/. (O /./é adicionado para fins de clareza e formatação)

O diretório /var/www/clients/client1/web5/ existe, mas o diretório subjacenteusr/compartilhar/zoneinfodiretório não.

Existe uma maneira de fazer isso com um único comando ou preciso ligar mkdir -pprimeiro?

Pensei cp --parentsem fazer exatamente isso, mas parece que só funciona ao copiar um único arquivo, não um diretório inteiro.

Responder1

Como você está especificando um local de destino /var/www/clients/client1/web5/./usr/share/zoneinfo/, cpprimeiro verificará se existe esse diretório para gravar arquivos. Então sim, você precisará criar o diretório primeiro. No entanto, se /var/www/clients/client1/web5/./usr/share/já estiver presente, você deverá ser capaz de:

cp -pr /usr/share/zoneinfo /var/www/clients/client1/web5/./usr/share/zoneinfo

já que existe o diretório de destino para gravar o zoneinfodiretório.

Responder2

rsync -a --relativefez o truque.

rsync -a --relative /usr/share/zoneinfo/ /var/www/clients/client1/web5/

O crédito vai paraunix_ninjasobreeste tweet

informação relacionada