No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripción 🔥

Aprende todo un fin de semana sin pagar una suscripción 🔥

Regístrate

Comienza en:

0D
23H
15M
45S
Curso de Programación en Bash Shell

Curso de Programación en Bash Shell

Marco Antonio Toscano Freire

Marco Antonio Toscano Freire

Empaquetamiento TAR, GZIP y PBZIP 2

35/43
Recursos

El empaquetamiento es un tema interesante para manejar respaldos u otro tipo de archivos para poder reducir el tamaño de uno o varios archivos para luego distribuirlos a través de la red u otra ubicación dentro del equipo.

  • tar: permite empaqueta múltiples archivos
  • gzip: Este solo nos permite empaquetar un único archivo, pero nos permite optimizar el tamaño del empaquetado. Suele usarse en conjunto con tar
  • pbzip2: Este comando permite soporta el multicore, multiprocesador. Solo podemos empaquetar un solo archivo.

Aportes 26

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Platzi, platzi, platzi… Me parece bastante mal que a un curso al que se le aplica una alta confianza por parte de los aprendices (y que, de hecho, muchos vienen aquí a tocar estos temas por primera vez), se les brinde una información confusa… El tanto hablar de parte de un instructor no implica que esté comparta en mejor manera el conocimiento (eso solo crea confusión), al contrario, mientras más simple, estructurada y certera sea la información que se comparte, mejor será la recepción del estudiante, me parece que deben tomar más en serio la calidad de sus cursos, ya que todos merecemos un producto de calidad…
|
Según la ayuda de los comandos en Linux, el comando tares para empaquetar y el comando gzip es para la compresión.

y los términos “ratio y rate” no son realmente lo mismo, “rate” si hace referencia a la cantidad, frecuencia o velocidad de un evento medible, sin embargo, “ratio” es una relación entre dos números que mide el grado de similitud entre ambos, p.ej. Si mi perro tiene 3 galletas, y mi gato tiene 6 galletas, entonces el “ratio” es 3:6, que también es expresado como un ratio de ½ o de 0.5… debería mencionar “rata”, o “rate” en inglés, o frecuencia, o velocidad, en vez de usar el término ratio…)

Tengo entendido que tar empaqueta y gzip comprime.

# !/bin/bash
# Programa para ejemplificar el empaquetamiento con pbzip
# Autor: Juan Pablo @JPJimenezE

echo "## Empaquetar todos los scripts de la carpeta shellCourse"
## Recuerda tener instalado pbzip2 !!! por defecto no lo tiene ubuntu.

# En dos pasos
compressFile=shellCourse."$(date +%Y%m%d_%H%M%S%N)".tar
tar -cvf $compressFile *.sh
pbzip2 -f $compressFile   # Compresión bz2

# En un paso
compressFile=shellCourse."$(date +%Y%m%d_%H%M%S%N)".tar
tar -cjf "$compressFile".bz2 *.sh  # Compresión bz2

# Comprobar el empaquetado
ls -ali *.tar*

No entiendo el tema del RATIO.

du -sh * les funciona para ver el tamaño de los archivos y directorios de la ruta donde se ubiquen

25_tar.sh

# ! /bin/bash
# Programa para ejemplificar el empaquetamiento con el comando tar
# Autor: Jose Suarez

echo "Empaquetar todos los scripts de la carpeta ShellCourse"

tar -cvf ShellCourses.tar *.sh

26_gzip.sh


# ! /bin/bash
# Programa para ejemplificar el empaquetamiento con el comando tar y gzip
# Autor: Jose Suarez

echo "Empaquetar todos los scripts de la carpeta ShellCourse"

tar -cvf ShellCourses.tar *.sh

#Cuando se empaqueta con gzip el empaquetamiento anterior se elimina
gzip ShellCourses.tar

echo "Empaquetar un solo archivo, con un ratio 9"
gzip -9 9_options.sh

27_pbzip2.sh


# ! /bin/bash
# Programa para ejemplificar el empaquetamiento con el comando pbzip
# Autor: Jose Suarez

echo "Empaquetar todos los scripts de la carpeta ShellCourse"

tar -cvf ShellCourses.tar *.sh

#Cuando se empaqueta con gzip el empaquetamiento anterior se elimina
pbzip2 -f ShellCourses.tar

echo "Empaquetar un directorio con tar y pbzip2"
tar -cf *.sh -c > ShellCoursedos.tar.bz2

Espero les sirva.

Hay que tener muy en claro que tar solamente agrupa multiples archivos en uno sólo, no comprime al menos que tu se lo especifiques.

Si quisieramos agrupar y comprimir archivos en un sólo movimiento, hariamos lo siguiente:

$ tar czf shellCourse.tgz *.sh
# ! /bin/bash
# Programa para empaquetamiento con clave ZIP
# Author Diego Beltran histagram @diegodevelops

echo "Empaquetas todos los scripts con clave"

zip -e shellCourse *.sh```

¿Por qué no simplmete usar -z o -j?

tar -czf shellCourse.tar.gz *.sh
tar -cjf shellCourse.tar.bz2 *.sh

También se puede combinar en una sola linea el tar y gzip
empaquetado y compresion
tar -czf shellCourse.tar.gz *.sh

Desempaquetar y descomprimir
tar -xzf shellCourse.tar.gz

la ultima linea no funciona, crea un archivo vació seria mejor de la siguiente manera:
tar -c *.sh | pbzip2 -c > shellCourseDos.tar.bz2

Ejemplo con uso de menú:

#!/bin/bash
# Author: Enzo Venturi Iglesias
while :
  do
    clear
      tput rev; tput cup 1 2
      echo "MAIN - PACKING"; tput sgr0
      
      echo -e "\n"
      echo "1) TAR  "
      echo "2) GZIP "
      echo "3) PBZIP"
      echo "4) Exit "
      echo -e "\n"

      tput bold;
      read -p "Enter your choice [1-5]: " Pick

    case $Pick in
      1) echo -e "\nPackaging..."; tar -cjf 1Bash.tar *.sh; 
         sleep 3; exit 0;;
      2) echo -e "\nCompress... "; gzip 1Bash.tar     *.sh; 
         sleep 3; exit 0;;
      3) echo -e "\nCompress... "; pbzip -f 1Bash.tar *.sh; 
         sleep 3; exit 0;;
      5) echo -e "\nExiting...  "
         exit 0;;
    esac
done

En el script 27 deberian revisar la ultima linea
lo mas simple es poner

echo "Empaquetar directorio con tar y pbzip2"
 tar -cjf shellcoursedos.tar.bz2 *.sh

Una manera para lograr que el script sea mas practico es pasar los archivos a empaquetar y comprimir por argumentos en la ejecucion del programa.

hola buenas tardes , yo pienso que en realidad el archivo .tar no se elimina sino que cambia o se mueve de ser un archivo empaquetado a ser un archivo comprimido

If you come from a Windows background, you may be familiar with the zip and rar formats. These are archives of multiple files compressed together.

In Unix and Unix-like systems (like Ubuntu), archiving and compression are separate.

tar puts multiple files into a single (tar) file.

gzip compresses one file (only).

So to get a compressed archive, you combine the two, first use tar or pax to get all files into a single file (archive.tar), then gzip it (archive.tar.gz). If you only have one file you need to compress (notes.txt), there’s no need for tar, so you just do gzip notes.txt which will result in notes.txt.gz. There are other types of compression, such as compress, bzip2 and xz which work in the same manner as gzip (apart from using different types of compression of course)

  • El empaquetamiento es un tema interesante para manejar respaldos u otro tipo de archivos para poder reducir el tamaño de uno o varios archivos para luego distribuirlos a través de la red u otra ubicación dentro del equipo.

  • tar: permite empaqueta múltiples archivos

  • gzip: Este solo nos permite empaquetar un único archivo, pero nos permite optimizar el tamaño del empaquetado. Suele usarse en conjunto con tar

  • pbzip2: Este comando permite soporta el multicore, multiprocesador. Solo podemos empaquetar un solo archivo.

Script escrito y probado en Ubuntu 18.04
Funciones del script:
1.Crear un file .txt
2.Crear un folder
3.Mover el file al folder
4.Crear 2 files encintados del folder y eliminar el original
5.Comprimir el primer file encintado mediante gzip
6.Comprimir el segundo file encintado mediante pbzip2

Script:

<h1>!/bin/bash</h1>


#echo $1
#echo $2

#source_file=$1
#source_folder=$2

#Create a .txt file
touch test.txt
#touch $source_file
#source_file+=".txt"
echo “Test message!” >> test.txt
#echo “Test message” >> source_file

#Create a folder
#mkdir -m 764 $source_folder
mkdir test_folder

#Move the created file to the created folder
#mv $source_file $source_folder
mv test.txt test_folder

#Create 2 new tapped files from the created folder
#source_folder_1=$source_folder
#source_folder_1+="_1.tar"
#source_folder_2=$source_folder
#source_folder_2+="_2.tar"

#tar -cvf $source_folder_1 $source_folder
#tar -cvf $source_folder_2 $source_folder
tar -cvf “test_folder_1.tar” test_folder
tar -cvf “test_folder_2.tar” test_folder
#-c.Create. -v.Verbose. -f.File

#Remove the original created folder
#rm -rf $source_folder
rm -rf test_folder

#Create a gzip compressed file from the 1 new tapped file
#gzip is able to compress 1 file at time
#The original 1 new tapped file is eliminated

#gzip (1-9) rate.

<h1>rate 1. Faster compression but larger size</h1> <h1>rate 9. slower compression but smaller size</h1>

gzip -9 “test_folder_1.tar”
#gzip -9 $source_folder_1

#Created a pbzip2 (not installed by default) compressed file
#from the 2 new tapped file
#…$ sudo apt-get install pbzip2
#pbzip2 is able to compress 1 file at time but this can be
#done in a multicore system.
pbzip2 -f “test_folder_2.tar” # -f.File. A new file called
#“test_folder_2.tar.bz2” is created
#pbzip2 -f $source_folder_2

Algunas formas de empaquetar y desempaquetar
con Tar:
Comprimir: tar -cvf nombre.tar /dir/a/comprimir/
Descomprimir: tar -xvf nombre.tar

con gzip:
Comprimir: gzip -# archivo.ext
Descomprimir: gzip -d archivo.ext.gz

Entendido

Aunque Gzip y Bzip2 son muy buenos, al menos mejores que ZIP, ya todos deberían estar usando xz

# ! /bin/bash
# Programa para empaquetamiento PBZIP2
# Author Diego Beltran histagram @diegodevelops

echo "Empaquetas todos los scripts"

# -c : crear
# -v: ver lo que se empaqueta
# -f: file
tar -cvf shellCourse.tar *.sh
pbzip2 -f shellCourse.tar

echo "Empaquetar un directorio con tar y pbzip2"
tar -cf *.sh > shellCourseDos.tar.bz2```
# ! /bin/bash
# Programa para empaquetamiento GZIP
# Author Diego Beltran histagram @diegodevelops

echo "Empaquetas todos los scripts"

# -c : crear
# -v: ver lo que se empaqueta
# -f: file
tar -cvf shellCourse.tar *.sh

# cuando se emaqueta cpn gzip el empaquetamiento anterior se elimina
gzip shellCourse.tar

echo "Empaquetar un solo archivo con ratio 9"
gzip -9 9_options.sh```



sudo apt-get install pbzip2 # para instalar el paquete que nos permite usar la funcion pbzip

25_tar.sh:

#!/bin/bash

tar -cvf shell_course.tar *.sh

26_gzip.sh:

#!/bin/bash

tar -cvf shell_course.tar *.sh
gzip shell_course.tar
gzip -9 9_options.sh

27_pbzip2.sh:

#!/bin/bash

# Packaging all files of a directory
tar -cvf shell_course.tar *.sh
pbzip2 -f shell_course.tar

# Packaging a directory with tar and pbzip2
tar -cf *.sh -c > shell_course_2.tar.bz2