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 鈥渞atio y rate鈥 no son realmente lo mismo, 鈥渞ate鈥 si hace referencia a la cantidad, frecuencia o velocidad de un evento medible, sin embargo, 鈥渞atio鈥 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 鈥渞atio鈥 es 3:6, que tambi茅n es expresado como un ratio de 陆 o de 0.5鈥 deber铆a mencionar 鈥渞ata鈥, o 鈥渞ate鈥 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鈥檚 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 鈥淭est message!鈥 >> test.txt
#echo 鈥淭est 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 鈥渢est_folder_1.tar鈥 test_folder
tar -cvf 鈥渢est_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 鈥渢est_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 鈥渢est_folder_2.tar鈥 # -f.File. A new file called
#鈥渢est_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