Como compactar em massa subpastas diferentes?

0

Eu tenho uma pasta all_folders que contém 5 pastas:

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

Posso compactar todas essas pastas usando um único comando de uma só vez? Eu quero estar no diretório all_folders e, em seguida, executar o comando para que as pastas individuais nesse diretório sejam compactadas.

A saída esperada é

quando faço

ls 

em all_folders , então eu deveria ter 10 diretórios. 5 descomprimidos e 5 comprimidos.

    
por Upendra Pratap Singh 12.02.2016 / 07:20

3 respostas

1

cd em all_folders e, em seguida, execute

for i in folder1 folder2 folder3 folder4 folder5; do tar czf $i.tar.gz $i; done
    
por 12.02.2016 / 08:25
1

Não está claro o que você está tentando realizar. Estou fugindo do caso de uso, onde apenas os subdiretórios serão compactados aqui.

Primeiro, vá para o diretório que contém a coleção de diretórios e, em seguida:

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

Isso funciona bem com zsh . Para testar as coisas, coloque um echo infront de tar , para ver se o comando faz check-out, etc.

No entanto, fazer uma coleção de arquivos como esse geralmente não é desejável. Normalmente, você quer compactar toda a coleção, usar a compactação transparente da unidade em que esses arquivos residem ou usar a compactação de transporte ( X-DEFLATE com HTTP, por exemplo).

Por favor, esteja ciente que você não vai acabar com um "diretório comprimido", mas com um "arquivo compactado", essas coisas não são intercambiáveis, como arquivos são arquivos próprios, enquanto os diretórios são meros inode datagramas.

    
por 12.02.2016 / 08:44
0
tar -zcvf archive.tar.gz directory/ 

Isto irá dizer tar para c (criar) um arquivo a partir dos arquivos no diretório (tar é recursivo por padrão), compactá-lo usando o algoritmo z (gzip), armazenar a saída como af (arquivo) chamado archive.tar. gz e v (verbosamente) listam todos os arquivos adicionados ao arquivo.

Para descompactar e descompactar o arquivo no diretório atual, você usaria

tar -zxvf archive.tar.gz 

    
por 12.02.2016 / 08:25