O seguinte bash
one-liner fará aproximadamente o que você descreve, colocando cada diretório em seu próprio tarball.
for d in dir/*/; do { tar -cj "$d" > "${d%/}.tar.bz2" ; } & done ; while [ "$(jobs)" ] ; do fg &>/dev/null ; done ; echo done
Eu tenho um diretório com várias centenas de subdiretórios. Eu quero tar e comprimir cada subdiretório e nomear o arquivo resultante <currentDirName>.tar.bz2
.
Eu fiz:
find ./dir -type f -print0 | xargs -0 -n1 -P100 bunzip2
para descomprimir 100 arquivos de uma só vez. (Eu faço modelagem oceânica, então minha máquina é bastante poderosa com muitos núcleos quádruplos.) Eu não sei como fazer algo parecido com o anterior, incluindo informações sobre como nomear o arquivo comprimido imediatamente. Eu não quero fazer tar cfj dir.tar.bz2 dir
para cada um.
Posso fazer isso com cada nome de diretório sendo usado automaticamente como o nome do arquivo tar - via find ou parallel para que 100 ou mais possam ser feitos por vez, como no comando bunzip acima?
Obrigado pela contribuição.
.... Peter
O seguinte bash
one-liner fará aproximadamente o que você descreve, colocando cada diretório em seu próprio tarball.
for d in dir/*/; do { tar -cj "$d" > "${d%/}.tar.bz2" ; } & done ; while [ "$(jobs)" ] ; do fg &>/dev/null ; done ; echo done
Tags command-line tar bzip2 parallelism