¿Cómo comprimir de forma masiva diferentes subcarpetas?

¿Cómo comprimir de forma masiva diferentes subcarpetas?

Tengo una carpeta all_foldersque contiene 5 carpetas:

./all_folders
./all_folders/folder1
./all_folders/folder2
./all_folders/folder3
./all_folders/folder4
./all_folders/folder5

¿Puedo comprimir todas estas carpetas usando un solo comando a la vez? Quiero estar en all_foldersel directorio y luego ejecutar el comando para que las carpetas individuales en este directorio se compriman.

El resultado esperado es

Cuando lo hago

ls 

en all_folders, entonces debería tener 10 directorios. 5 sin comprimir y 5 comprimidos.

Respuesta1

cden all_folders, luego corre

for i in folder1 folder2 folder3 folder4 folder5; do tar czf $i.tar.gz $i; done

Respuesta2

No está claro lo que estás tratando de lograr. Me estoy quedando sin el caso de uso en el que aquí solo se deben comprimir los subdirectorios.

Primero, vaya al directorio que contiene la colección de directorios y luego:

find -maxdepth 1 -type d | {
    while read dir; do 
        if [ ! "x${dir#*/}" = "x." ]; then
            tar cJf ${dir#*/}.tar.xz ${dir#*/};
        fi;
    done
}

Esto funciona bien con zsh. Para probar cosas, coloque un echodelante de tarpara ver si el comando funciona, etc.

Sin embargo, normalmente no es deseable hacer una colección de archivos como esta. Por lo general, querrás comprimir toda la colección, usar una compresión transparente de la unidad en la que residen estos archivos o usar compresión de transporte ( X-DEFLATEcon HTTP, por ejemplo).

Tenga en cuenta que no terminará con un "directorio comprimido" sino con un "archivo comprimido", estas cosas no son intercambiables, ya que los archivos son archivos en sí mismos, mientras que los directorios son merosinododatagramas.

Respuesta3

tar -zcvf archive.tar.gz directory/ 

Esto le indicará a tar que c (cree) un archivo a partir de los archivos en el directorio (tar es recursivo de forma predeterminada), lo comprimirá usando el algoritmo z (gzip), almacenará la salida como un (archivo) llamado archive.tar.gz y v (detalladamente) enumera todos los archivos que agrega al archivo.

Para descomprimir y descomprimir el archivo en el directorio actual, usaría

tar -zxvf archive.tar.gz 

ingrese la descripción de la imagen aquí

información relacionada