Ikasten.IO
Learning, Aprendiendo

Anti bomba tar.gz 19 Enero, 2011

¿A quién no le ha ocurrido? Descargas un fichero.tar.gz en $HOME, invocas el conjuro para desempaquetar y descomprimir:

Y cuando observas el resultado te das cuenta que el muy %$E/&% se ha descomprimido SIN crear un subdirectorio, o sea, ha dejado todo tu $HOME lleno de ficheros. Es lo que se conoce como una bomba tar.

Bien, el siguiente comando atb (anti-tar-bomb), encontrado en commandlinefu.com, analiza el tar.gz (o .bz2 o .tgz) ANTES de descomprimirlo. Si resulta que se trata de una bomba tar, crea un directorio con el mismo nombre X que el fichero X.tar.gz y luego lo descomprime en X. Magia!

Categorias Bash diariolinux
  • arpia49 dice:

    O también puedes descomprimir desde el entorno gráfico. Ubuntu (gnome) SIEMPRE te crea el directorio.

    Eso sí, soy consciente de que a veces no tenemos entorno gráfico, pero en mi caso eso pasa el 1% del tiempo.

  • atareao dice:

    Muy bueno, pero que muy bueno

  • cpcbegin dice:

    También se le puede echar un vistazo al tar.gz con mc o descomprimirlo siempre en un directorio aparte y si no era bomba moverlo al sitio correcto.

  • Adri. dice:

    Es lo que (increíblemente) hacía (y sigue haciendo) la versión 1.5 de Joomla. Ahora por suerte, con la 1.6 ya hay el empaquetado con tar+gz, y ya lo hacen bien.

    Es un programa muy específico pero que va bien tener en el botiquín por si acaso!

  • Iñaki dice:

    Contra las bombas tar hay una herramienta muy útil, pero no es el software, sino el sentido común.

    En primer lugar, podemos asegurarnos de que nunca polucionaremos el directorio actual si siempre creamos un subdirectorio y descomprimimos allí. Es una solución análoga a la de arpia49. Si el tar era una bomba, nos alegraremos de haber usado un subdirectorio. Si no (si nos crea él un sub-subdirectorio), la solución es fácil (mover el sub-subdirectorio creado al dir padre, y eliminar el subdirectorio que hemos creado).

    En segundo lugar, un fichero tar siempre hay que inspeccionarlo con tar -t antes de descomprimirlo. Ejemplo:

    $ ls *tar.gz
    fichero.tar.gz
    $ tar -ztvf fichero.tar.gz
    subdir/fichero1
    subdir/fichero2
    $ tar -zxvf fichero.tar.gz
    subdir/fichero1
    subdir/fichero2

    Al usar -t en vez de -x, se nos muestra en pantalla el contenido del tar, como si lo fuesemos a descomprimir, pero sin hacerlo. Vemos que descomprime todo en “subdir”, así que lo descomprimimos (con -x) sin miedo.

  • Fran dice:

    Es mejor mirar dentro antes para no liarla. Pero bueno, como culturilla esta bien.

  • Aleve Sicofante dice:

    El Unarchiver para Mac OSX tiene una opción que hace automáticamente lo que dicta el sentido común: mira dentro del archivo y si hay más de una carpeta o archivos, descomprime a una carpeta. Si sólo hay una carpeta, descomprime sin crear una nueva. No creo que fuese muy difícil incluir esta habilidad en tar o al menos el descompresor del escritorio Gnome. Crear una carpeta SIEMPRE no es muy sensato. (El Unarchiver incluye otra opción más que razonable también: borrar el archivo tar después de descomprimir.)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *