AIX cria diretório ao copiar

AIX cria diretório ao copiar

Qual a melhor forma de criar um diretório que não existe ao copiar arquivos no AIX? Algo assim:

ssh server1 'cp -R ~user1/bin/log ~user2/bin/log'
cp: /u/user2/bin/log: No such file or directory
ssh server1 'cp -r ~user1/bin/log ~user2/bin/log'
cp: /u/user2/bin/log: No such file or directory

O diretório ~user2/ existe, mas não o diretório ~user2/bin.

Responder1

Uma possibilidade seria usar um pipeline tar:

(cd ~user1/ && tar -c -p -f - bin/log) | (cd ~user2/ && tar -x -p -f -)

Isso usa um subshell para mudar para o diretório pai do local de origem e, em seguida, informa tarpara gravar um arquivo do diretório "log" no stdout. O segundo subshell muda para o diretório pai do destino e, em seguida, informa tarpara extrair o arquivo que vem do stdin do pipe. Os tarcomandos são encadeados para &&serem executados somente se o cdcomando correspondente for bem-sucedido.

Você pode testar isso dizendo ao segundo tarpara simplesmente imprimir o conteúdo recebido; basta alterar -xpara -t. Usar -pwith -tnão importa e não faz mal:

(cd ~user1/ && tar -c -p -f - bin/log) | (cd ~user2/ && tar -t -p -f -)

informação relacionada