Сжатие только файлов в папке, исключая папки в абсолютном пути файла

Я хочу сжать папку с 100 файлами в партиях по 10. Я использовал следующий скрипт для этого. Но что происходит, когда я разархивирую gzip-файл, у него есть все папки из /.

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

Может ли кто-нибудь рассказать мне, как хранить только файлы без содержащихся папок?

2
задан 24 January 2018 в 14:18

3 ответа

Простейшим способом было бы просто cd в каталоге и запустить find оттуда:

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

Обратите внимание, что вы создаете файлы tar.gz в том же каталоге, что и файлы, что означает, что они появятся на выходе find, а затем будут включены в другие файлы tar.gz. Поместите файлы tar.gz в какой-либо другой каталог.

Кроме того, для партий по 10 вам нужно -l 10, а не -l 5, которые будут состоять из 5.

1
ответ дан 22 May 2018 в 15:20
  • 1
    Спасибо, и это сработало! И файлы будут удалены после их переноса в место резервного копирования. Таким образом, они не будут включены при использовании find. Еще раз спасибо. – Nisari N 24 January 2018 в 14:28
  • 2
    Вас предупредили. – muru 24 January 2018 в 14:29
  • 3
    Я просто упоминал случайное число. Я изменил его на 500, чтобы соответствовать моему делу. Благодаря! – Nisari N 31 January 2018 в 14:51

Простейшим способом было бы просто cd в каталоге и запустить find оттуда:

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

Обратите внимание, что вы создаете файлы tar.gz в том же каталоге, что и файлы, что означает, что они появятся на выходе find, а затем будут включены в другие файлы tar.gz. Поместите файлы tar.gz в какой-либо другой каталог.

Кроме того, для партий по 10 вам нужно -l 10, а не -l 5, которые будут состоять из 5.

1
ответ дан 17 July 2018 в 22:20

Простейшим способом было бы просто cd в каталоге и запустить find оттуда:

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

Обратите внимание, что вы создаете файлы tar.gz в том же каталоге, что и файлы, что означает, что они появятся на выходе find, а затем будут включены в другие файлы tar.gz. Поместите файлы tar.gz в какой-либо другой каталог.

Кроме того, для партий по 10 вам нужно -l 10, а не -l 5, которые будут состоять из 5.

1
ответ дан 23 July 2018 в 22:58

Другие вопросы по тегам:

Похожие вопросы: