Copia archivos y directorios recursivamente con tar

La copia de un árbol de directorios y su contenido a otro sistema de archivos utilizando tar mantendrá la propiedad, los permisos y las marcas de tiempo. Un buen truco permite usar tar para realizar una copia recursiva sin crear un archivo tar intermedio.


Para copiar todos los archivos y subdirectorios en el directorio de trabajo actual al directorio / destino, use:

tar cf - * | (cd / target; tar xfp -)

La primera parte del comando antes de la tubería le indica a tar que cree un archivo de todo en el directorio actual y lo escriba en la salida estándar (el lugar de un nombre de archivo indica frecuentemente stdout). Los comandos entre paréntesis hacen que el shell cambie el directorio al directorio de destino y descomprima los datos de la entrada estándar. Dado que los comandos cd y tar están contenidos entre paréntesis, sus acciones se realizan juntas.

La opción -p en el comando de extracción de tar dirige a tar a preservar la información de permisos y propiedad, si es posible dado el usuario que ejecuta el comando. Si está ejecutando el comando como superusuario, esta opción está activada de forma predeterminada y se puede omitir.