Compressing Directory

0

Eu quero comprimir os diretórios ( tar ou gzip ou zip ) com mais de dois dias. Eu tenho os arquivos abaixo. Cada diretório terá vários subdiretórios e arquivos.

Oct 21 13:01 test1
Oct 22 13:01 test2 

Saída desejada:

   test1.tar
   test2.tar

Eu tentei escrever o comando abaixo; mas não está funcionando.

   find . -type d -maxdepth 1 -mtime +2 \! -name '*.gz' -exec gzip {} \;

Estou recebendo o erro abaixo.

   gzip:test1.tar is a directory -- ignored
   gzip:test2.tar is a directory -- ignored
    
por Naresh 23.10.2017 / 17:24

2 respostas

1

Como o gzip só pode compactar arquivos, primeiro você deve tar os diretórios antes de compactá-los.

O que você quer fazer é usar o GNU tar com compressas "z", "z":

find . -type d -maxdepth 1 -mtime +2 \! -name '*.gz' -exec tar cfz {}.tgz {} \;

EDIT Depois de comentar:

Eu não prestei atenção ao \! -name '*.gz' , que em circunstâncias normais é supérfluo ... desde que você não tenha nomes de diretório com fim em .gz .

find . -type d -maxdepth 1 -mtime +2 -exec tar cfz {}.tgz {} \;

    
por 23.10.2017 / 17:30
0

Use o utilitário de arquivamento tar :

find . -type d -maxdepth 1 -mtime +2 ! -name '*.gz' -exec tar -czvf old_dirs.gz '{}' +;

-exec command {} +
This variant of the -exec action runs the specified command on the selected files, but the command line is built by appending each selected file name at the end; the total number of invocations of the command will be much less than the number of matched files.

    
por 23.10.2017 / 17:44