¿Cómo crear y descomprimir un archivo con tar?

Tiene varios ficheros o carpetas que deseas archivar: la orden tar es su amigo.

tar cf /carpeta_de_su_archivo/MisDocs.tar  /home/pepe/Mis_documentos     

Explicaciones:         tar: nombre de la orden.

c para crear
/home/pepe/Mis_documentos    --> es el nombre de lo que se quiere archivar
MisDocs.tar                                --> es el nombre que se da al archivo que se va a crear
/carpeta_de_su_archivo/            --> es la carpeta en lo cual quieres que tar cree tu archivo

De paso una pequeña precisión: la orden tar no añade la extensión .tar al final del archivo. Es usted quien debe  ponerla. Si la olvida, bastará con renombrar su archivo después.

 tar cf /carpeta_de_su_archivo/MisDocs.tar  /home/pepe/Mis_documentos   /etc/    /usr/local/

Explicaciones: el primer nombre de fichero es el del archivo que se va a crear; todos los siguientes son los que se van  a archivar por tar.

tar xf /carpeta_de_su_archivo/MisDocs.tar        
x para eXtraer

Use la opción "t" y ya está:

tar tf  /carpeta_de_su_archivo/ MisDocs.tar

Añadir la opción z para comprimir con gzip y la opción j para comprimir con bzip2. (La opción de compresión  es la opción predefinida, es decir -5)
tar czf para crear un archivo comprimido por gzip2
tar cjf para crear un archivo comprimido por bzip2
Por supuesto, es mucho más lento.
Es posible comprimir con otras opciones (es decir otras tasas de compresión)

tar xzf /carpeta_de_su_archivo/ MisDocs.tar.gz o
tar xjf /carpeta_de_su_archivo/MisDocs.tar.bz


Aquí también, la orden tar no añadirá la extensión tar.gz o tar.bz y tendrá que hacerlo sú mismo. En cambio, si comprima después (con la orden bzip o gzip), la extensión bz o gz se añadirá automáticamente.

Eso es normal: tar desarchiva en el directorio de trabajo, y no necesariamente en el directorio en el cual se halla el archivo. (afortunadamente por cierto, ¿cómo haríamos para desarchivar directamente a partir de un CDrom?)
Así pues, si estoy dentro de /home/pepe y que mi fichero /carpeta_de_su_archivo/MisDocs.tar está dentro de /home/pepe/Mis_documentos/, haciendo:
tar xf /carpeta_de_su_archivo/MisDocs.tar, voy a encontrar el resultado del desarchivo dentro de /home/pepe/ y no en /home/pepe/Mis_documentos/.

Recuerde: para conocer el directorio de trabajo actual (es decir él en donde se encuentra,) hacer pwd.
Para cambiar de directorio, hacer: cd /nuevo_directorio/

cd /home/pepe/Mis_documentos/Correo/         y después
tar xf /carpeta_de_su_archivo/MisDocs.tar

Si por ejemplo, en el archivo /carpeta_de_su_archivo/ MisDocs.tar, hay los ficheros (o directorios) imagen1 y imagen2 que quiere extraer, primero debe conocer sus caminos completos al interior del archivo con la opción t
tar tf /carpeta_de_su_archivo/MisDocs.tar
que va a listar todos los ficheros del archivo con sus caminos. Como es posible que sea largo, puede filtrar con grep haciendo:
tar tf /carpeta_de_su_archivo/MisDocs.tar  | grep imagen1 (idem avec imagen2)
Supongamos que encuentre:
Mi_album/Mis_fotos/imagen1 y
Mi_album/Mis_dibujos/imagen2
Haga:

tar xf /carpeta_de_su_archivo/MisDocs.tar  Mi_album/Mis_fotos/imagen1  Mi_album/Mis_dibujos/imagen2

Y tar va a extraer *únicamente* esos dos ficheros de este gordo archivo (puede que dure bastante tiempo).

Es debido al espacio (blanco) en "Mis clichés". Dos soluciones: renombre poniendo un guión largo "_" en lugar del espacio. O ponga el nombre entero entre " " así.
tar xf /carpeta_de_su_archivo/MisDocs.tar "Mi_album/Mis clichés/foto4"

He archivado el directorio /home/pepe/Mis_documentos/Mis_imagenes/ en el cual habían "foto1" y "foto2" y leyendo el archivo (opción t) o desarchivándolo (opción x), tengo nombres de ficheros muy largos
/home/pepe/Mis_documentos/Mis_imagenes/foto1 y
/home/pepe/Mis_documentos/Mis_imagenes/foto2
¿No hay manera de conseguir sólo "foto1" y "foto2"?

Basta con meterse en el directorio a archivar haciendo:
cd /home/pepe/Mis_documentos/Mis_imagenes/    después ejecutar:
tar cf /carpeta_de_su_archivo/MisDocs.tar *
* quiere decir todo lo que se encuentra en el directorio de trabajo actual.

Ojo con el uso que hará de esto archivo (sobre todo si contiene numerosos ficheros). Si usted o otra persona, la desarchiva en un cualquier directorio, va a encontrarte con una multitud de ficheros que se van a añadir, y tendrá mucha faena para saber cuales eran los ficheros que estaban ahí al principio. ¡Ánimo! Si encuentra tal archivo, más vale que te meta (con la orden cd) dentro de un directorio vacío. Siempre podrá desplazar sus ficheros.

Así que, resumiendo, si con la orden tar tf, tiene algo parecido:
foto1
foto2
foto3
....
métase en una carpeta vacía, porque todo se va a desarchivar de cualquier manera.

Si tiene algo que se parezca a eso:

album/foto1
album/foto2
album/foto3
....
puede prescindir hacerlo, ya que todo se va a desarchivar en el directorio "album" que se va a crear.

tar: Eliminando cabecera '/' de los nombres de miembros

No es un mensaje de error: tar quita el primer / para dar un camino relativo a los ficheros del archivo en vez de darlos un camino absoluto por razón de seguridad. En efecto, imagina que archiva el directorio /etc. En el archivo, tendrá por ejemplo etc/passwd (o /etc/shadow). Durante el archivo, no tiene ninguna incidencia. Durante el desarchivo, en cambio, si tenía /etc/passwd en el archivo, va a sobreescribir el /etc/passwd existente! Vaya catástrofe!

Como tiene etc/passwd, se va a desarchivar en el directorio de trabajo actual (por ejemplo /home/pepe/ lo que dará /home/pepe/etc/passwd). Después, si quiere, podrá poner este fichero en lugar de él que está ya en /etc (suponiendo que sepas lo que hace:). Pero no se hará automáticamente y no a sus espaldas.

Note que es posible invalidar está acción de supresión de los / con la opción -P (lo que puede ser peligroso). Así pues, si desarchiva un fichero .tar, eche un vistazo antes con la opción -t. Si los nombres de los ficheros no empiezan por /, vale; sino, ¡peligro!

Última cosa, para tomar otra vez el ejemplo de etc/passwd, es muy claro que si su directorio de trabajo actual es la raíz (es decir que si hizo un cd / o si la orden pwd le devuelve /, su fichero /etc/passwd original estará sobrescrito por el fichero etc/passwd de su archivo.

Conclusión, antes de desarchivar un fichero tar, vaya en un directorio donde no arriesgue gran cosa: incluso créelo adrede con ocasión con la orden mkdir. Ejemplo:
mkdir /home/pepe/directorio_de_desarchivo
cd /home/pepe/directorio_de_desarchivo
tar xf /carpeta_de_su_archivo/MisDocs.tar

Si las pruebas no son buenas, no vacile: ¡empiece de nuevo!

Ya está, habría muchas cosas que decir sobre tar, pero ya tiene bastante para divertirte (y no olvide que "man tar" y "info tar" son sus amigos :-).

Este artículo esta sometido a la licencia LGPL. Lo puede copiar, traducir (excepto en francés que es el idioma original) y difundirlo como quiera con la condición de no modificarlo y de dejar intacta la presente noticia.

Fue escrito y traducido con la ayuda de varios miembros de la comunidad del sofware libre que agredezco de paso.


¿Errores, sugerencias? Escríbame. Ver mi dirección aquí http://astuce.linux.free.fr/Espagnol/index.html

Actualizado el 20 de octubre de 2004

Claude MICOUIN