¿Cómo puedo copiar un directorio y cambiarle el nombre con el mismo comando?

15

Actualmente, estoy ejecutando estos dos comandos para crear una copia de seguridad rápida del directorio. ¿Hay alguna forma de combinar los dos comandos en uno, de modo que copie y renombre el nuevo directorio en un 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
fuente
1
cp -R /tf/Custom_App /tf/Custom_App_backups/Custom_App_2017-12-21
jesse_b
¿Qué tal definir un alias o función para esas dos cosas;)
LinuxSecurityFreak

Respuestas:

21

Deberías poder hacer solo

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

Sin embargo , si el directorio de destino ya existe, esto agregaría la parte final de la ruta de origen a la ruta de destino, creando /tf/Custom_App_backups/Custom_App_2017-12-21/Custom_Appy luego copiando el resto del árbol dentro de eso.

Para evitar esto, utilícelo /tf/Custom_App/.como fuente. Por supuesto, en ese caso es posible que desee rm -r /tf/Custom_App_backups/Custom_App_2017-12-21primero, si no desea que haya archivos más viejos por ahí después de la copia.

La diferencia entre /some/diry /some/dir/.se discutió hace un tiempo en cp se comporta de manera extraña cuando. (punto) o .. (punto punto) son el directorio fuente

ilkkachu
fuente
Una alternativa a pasar .como directorio de origen es usar el -Tindicador para indicar cpque se sobrescriba el destino en lugar de crear un nuevo miembro dentro de él.
Toby Speight
@TobySpeight, ... en GNU cp.
ilkkachu
1
El /tf/Custom_app/.truco es justo lo que necesitaba.
Martin Bonner apoya a Monica el
cp -aTambién funciona.
flow2k
1
@ flow2k, las utilidades GNU en particular tienen muchas opciones no estándar, muchas de ellas muy útiles. cp -apor supuesto, también aparece en, por ejemplo, FreeBSD y OpenBSD, pero todavía no es una característica estándar, es decir, no está especificada por POSIX . ( cp -TQue se ha mencionado anteriormente parece un GNUism, que no está en POSIX, y no en los BSD por lo que yo puedo ver.)
ilkkachu
1

Alternativamente, puede hacerlo así:

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

Esto le permitirá especificar su ubicación personalizada de antemano. Además, /.tenga en cuenta que usa el sufijo Esto le permite copiar solo el contenido y excluir la carpeta que lo contiene, en este caso, es la Custom_appcarpeta.

Abel Melquiades Callejo
fuente