Como posso copiar um diretório e renomeá-lo no mesmo comando?

15

Atualmente, estou executando esses dois comandos para criar um backup rápido do diretório. Existe uma maneira de combinar os dois comandos em um, para que eu esteja copiando e renomeando o novo diretório em um comando?

#cp -R /tf/Custom_App /tf/Custom_App_backups/
#mv /tf/Custom_App_backups/Custom_App /tf/Custom_App_backups/Custom_App_2017-12-21
AllisonC
fonte
1
cp -R /tf/Custom_App /tf/Custom_App_backups/Custom_App_2017-12-21
jesse_b
Que tal definir alias ou função para essas duas coisas;)
LinuxSecurityFreak 21/17 /

Respostas:

21

Você deve ser capaz de fazer exatamente

cp -R /tf/Custom_App /tf/Custom_App_backups/Custom_App_2017-12-21

No entanto , se o diretório de destino já existir, isso acrescentará a parte final do caminho de origem ao caminho de destino, criando /tf/Custom_App_backups/Custom_App_2017-12-21/Custom_Appe copiando o restante da árvore dentro dele.

Para evitar isso, use /tf/Custom_App/.como fonte. Obviamente, nesse caso, você pode querer rm -r /tf/Custom_App_backups/Custom_App_2017-12-21primeiro, se não quiser arquivos mais antigos espalhados por aí após a cópia.

A diferença entre /some/dire /some/dir/.foi discutido há algum tempo no cp se comporta estranhamente quando. (ponto) ou .. (ponto) são o diretório de origem

ilkkachu
fonte
Uma alternativa para passar .como diretório de origem é usar o -Tsinalizador cppara substituir o destino em vez de criar um novo membro dentro dele.
Toby Speight
@TobySpeight, ... no GNU cp.
Ilkkachu
1
O /tf/Custom_app/.truque é exatamente o que eu precisava.
Martin Bonner apoia Monica
cp -atambém funciona.
flow2k 22/05/19
1
@ flow2k, os utilitários GNU, em particular, têm muitas opções fora do padrão, muitas delas muito úteis. cp -aobviamente também aparece no FreeBSD e no OpenBSD, mas ainda não é um recurso padrão, isto é, não especificado pelo POSIX . ( cp -TQue foi mencionado anteriormente parece um GNUism, não é em POSIX, e não nos BSDs, tanto quanto eu posso ver.)
ilkkachu
1

Como alternativa, você pode fazer o seguinte:

mkdir /tf/Custom_App_backups/Custom_App_2017-12-21 # prepare the target location
cp -R /tf/Custom_app/. /tf/Custom_App_backups/Custom_App_2017-12-21 # copy only the contents

Isso permitirá que você especifique seu local personalizado com antecedência. Além disso, observe que ele usa o sufixo /.Isso permite copiar apenas o conteúdo e excluir a pasta que a contém - nesse caso, é a Custom_apppasta.

Abel Melquiades Callejo
fonte