Compacta apenas arquivos em uma pasta, excluindo as pastas no caminho absoluto do arquivo

2

Eu quero compactar uma pasta com 100 arquivos em lotes de 10. Eu usei o seguinte script para fazer isso. Mas o que acontece é quando eu descompactar o arquivo gzipado, ele tem todas as pastas de /.

find /home/ubuntu/reports/tmp -type f -print0 | split -t '
find /home/ubuntu/reports/tmp -type f -print0 | split -t '%pre%' -l 5 -d --filter 'tar czf /home/ubuntu/reports/tmp/reports-$(date +"%F-%T")-$FILE.tar.gz --files-from=- --null'
' -l 5 -d --filter 'tar czf /home/ubuntu/reports/tmp/reports-$(date +"%F-%T")-$FILE.tar.gz --files-from=- --null'

Alguém pode me dizer como zip apenas os arquivos sem as pastas que contém?

    
por TrickyExplorer 24.01.2018 / 11:10

1 resposta

1

A maneira mais simples seria simplesmente cd para o diretório e executar find a partir dali:

cd /home/ubuntu/reports/tmp
find . -type f -print0 | split -t '
cd /home/ubuntu/reports/tmp
find . -type f -print0 | split -t '%pre%' -l 5 -d --filter 'tar czf /home/ubuntu/reports/tmp/reports-$(date +"%F-%T")-$FILE.tar.gz --files-from=- --null'
' -l 5 -d --filter 'tar czf /home/ubuntu/reports/tmp/reports-$(date +"%F-%T")-$FILE.tar.gz --files-from=- --null'

Note que você está criando os arquivos tar.gz no mesmo diretório que os arquivos, o que significa que eles aparecerão na saída de find e então serão incluídos no outro tar. arquivos gz. Coloque os arquivos tar.gz em algum outro diretório.

Além disso, para lotes de 10, você precisa de -l 10 , não -l 5 , que seriam lotes de 5.

    
por muru 24.01.2018 / 11:18