A veces es necesario empaquetar varios archivos y/o directorios en un solo archivo. Es más fácil transferir un solo archivo a través de una red e incluso una memoria USB (la creación de miles de archivos en la memoria flash puede ser lenta). En sistemas operativos como Windows, esto normalmente se hace archivando en archivos .zip (comprimir) o .rar. En los sistemas operativos *nix, como Linux, la utilidad de acceso es «tar». El nombre de este comando se deriva de Tape ARchive, ya que inicialmente fue diseñado para realizar copias de seguridad de datos en cinta magnética. Hoy en día todavía se puede usar para este propósito, pero en la mayoría de los casos es simplemente un método para crear los llamados «tarballs». El propósito de los tarballs es facilitar la carga, descarga y transferencia de datos, o el mantenimiento de copias de seguridad.
1. Consulte el manual de alquitrán
Cada comando en Linux tiene una página de manual. Puedes consultar el manual de tar ingresando esto en tu terminal:
Navegue por el contenido con las teclas de flecha, RE PÁG y AV PÁG. Pulse q para salir del manual.
2. Crear un tarball de directorio
Cree un directorio con nueve archivos vacíos para que pueda probar los comandos tar:
mkdir $HOME/test9 && touch $HOME/test9/{1..9}
Ahora cambie a su directorio de inicio.
Para enviar el contenido de un directorio a un archivo tar:
c
– significa crearv
– detallado, muestra qué archivo se agregó actualmente al archivo; útil para trabajos de larga ejecución, para ver el progresof
– le dice a la utilidad que cree un archivo tar, con el nombre especificado, test.tar
3. Agregar contenido a un tarball existente
Cree otro directorio con archivos vacíos nombrados de la a a la z:
mkdir $HOME/test-az && touch $HOME/test-az/{a..z}
Ahora agréguelo al archivo tar ya existente (r
parámetro):
tar -rvf test.tar test-az
Si abre test.tar en un administrador de archivos gráficos, verá el siguiente contenido.
4. Listar el contenido del archivo tar
Utilizar el -t
bandera para listar el contenido del archivo tar.
5. Extraer contenido de Tarball
Los contenidos se extraerán en su directorio actual. Cree un nuevo directorio y luego cambie a él:
mkdir $HOME/test-extract && cd $HOME/test-extract
Ahora extraiga test.tar en el directorio actual:
6. Crear Tarball Comprimido (gzip)
Si tiene la intención de transferir el archivo tar a través de la red, reducirlo es una buena práctica para aumentar la velocidad de transferencia. Vuelva a cambiar a su directorio de inicio.
Y crea un archivo tar comprimido.
tar -cvzf test.tar.gz test9
Como puede ver, la única diferencia es el agregado z
parámetro, que le indica a tar que use gzip para comprimir el archivo.
7. Crear Tarball comprimido aún más pequeño (bzip)
En vez de z
parámetro, puede utilizar j
para comprimir con bzip.
tar -cvjf test.tar.bz test9
Esto reducirá aún más el tamaño del archivo, pero llevará más tiempo comprimirlo y descomprimirlo.
8. Extraiga un solo archivo o directorio
Simplemente agregue el nombre exacto del archivo o directorio, tal como aparece en el archivo tar:
tar -xvf test.tar test9/7
Esto extrae solo test9/7
expediente.
9. Extraiga solo archivos/directorios que coincidan con un patrón
Si desea extraer todos los archivos que terminan en la extensión .jpg:
tar -xvf test.tar --wildcards '*.jpg'
10. Conservar permisos
Los permisos no son importantes cuando se crean tarballs a partir de documentos, imágenes y medios similares. Pero si está haciendo una copia de seguridad de su sistema, puede agregar el p
parámetro para preservar los permisos de archivo:
tar -cvpf test-permissions.tar test9
11. Eliminar archivos o directorios de Tarball
Funciona solo en archivos tar sin comprimir.
tar -f test.tar --delete test-az
Esto elimina el directorio test-az del tarball, incluidos los archivos que contiene. tar f test.tar --delete test-az/z
simplemente eliminará el archivo «test-az/z».
12. Excluir archivos o directorios para que no se agreguen a Tarball
tar -cvf test-exclude.tar --exclude test9/9 test9
Como puede ver, el archivo 9 fue excluido del archivo tar. Se pueden agregar múltiples parámetros de exclusión: tar cvf test-exclude.tar --exclude test9/9 --exclude test9/8 test9
.
13. Manténgase en un sistema de archivos
--one-file-system
se puede agregar en un comando como tar -cvpzf backup.tar.gz --one-file-system /
.
Esto haría una copia de seguridad de su sistema de archivos raíz, excluyendo otros sistemas de archivos que haya montado en /home, /mnt, /media, /proc, etc.
14. Conservar atributos extendidos
Además de los permisos de archivo, algunas distribuciones de Linux también tienen atributos de archivo extendidos. Para conservarlos todos, agregue estos parámetros: --acls --selinux --xattrs
.
Comando de ejemplo:
tar -cvpzf backup.tar.gz --one-file-system --acls --selinux --xattrs /
15. Crear un nuevo directorio para archivos extraídos
Normalmente, tar se extrae en su directorio actual. Puedes mkdir new_directory
y cd new_directory
antes de usar tar, si el directorio donde desea extraer aún no existe. Pero instruir a tar para que haga todo por ti es más elegante:
tar -xvf test.tar --one-top-level=new_directory
Conclusión
Estos son los comandos tar más utilizados. Pero la utilidad es versátil y se puede utilizar de muchas otras formas. Si no le gusta leer manuales en la terminal, puede encontrar la Versión HTML del manual tar más fácil de navegar.