shell para compactar arquivos em lote

0

Eu tenho um servidor com mais de 5,4 milhões de arquivos com nomenclaturas aleatórias. Agora eu quero escrever um script de shell para compactar esses arquivos em arquivos de 1000 gz de 5400 arquivos em cada. Eu também quero manter o log de cada arquivo é compactado em qual arquivo gz para a referência futura. Isso é possível de alguma forma?

    
por kulvikram 25.11.2016 / 15:06

1 resposta

1

Suponho que você não tenha "\ n" em nomes de arquivos e seu shell seja bash:

find /path -type f -print | split -l 5400 - filenames.
for f in filenames.*
do tar cvzf tarfile-${f#filenames.}.tar.gz -T $f
done
gzip -9 filenames.*

Onde está o arquivo "zzz"?

zgrep zzz filename.*

Se o comando retornar "filename.XX.gz", o arquivo está em "tarfile-XX.tar.gz"

    
por 25.11.2016 / 18:07