Как исключить большие файлы при сжатии каталога с помощью tar - PullRequest
3 голосов
/ 02 марта 2012

Я хочу сжать каталог в Linux.Я создал tar.gz , который превращается в большой файл, из-за того, что каталог содержит некоторые файлы * .o и некоторые файлы PDF.

Есть ли способсжать каталог, но исключить файлы больше предопределенного РАЗМЕРА? В команде tar есть аргумент --exclude, однако я бы хотел отклонить файлы размером более 1 МБ.Это ограничение, а не имя файла.

Ответы [ 4 ]

2 голосов
/ 12 августа 2013

На основании ответа Яна-Филиппа Герке:

find . -type f -size -1024k | tar -czf --null -T - -f archive.tar.gz

для файлов менее 1М. Протестировано на OS X и Ubuntu Linux.

0 голосов
/ 02 февраля 2015

Приведенное выше решение ...| tar c --null -T - является наилучшим, если у вас достаточно памяти (т.е. список файлов легко помещается в вашу память (в большинстве случаев это так)).Тем не менее, xargs имеет место, если вы ограничены в памяти, но вы должны использовать его соответствующим образом, чтобы множественные вызовы tar не оказывали вредного воздействия.

Для сжатия вы можете использовать:

find . -type f -size -1024k | xargs tar c | gzip > archive.tar.gz

В результате получается файл сцепленных tar-архивов, сжатых вместе в результирующий файл (вы также можете использовать cz и опустить | gzip, так как объединяющие архивы gzip по-прежнему действительны gzip, но выпотерять чуть-чуть сжатия или совсем немного сжатия, если вы используете bzip2 или xz вместо gzip).

Чтобы извлечь полученный файл, вы должны иметь для использования --ignore-zeros или-i опция tar не только для извлечения первого архива:

tar xizf archive.tar.gz
0 голосов
/ 02 марта 2012

Вы можете использовать комбинацию find (с флагом -size) и xargs для передачи его в tar.

Что-то вроде:

find . -size -100k -print | xargs tar cvf archive.tar

для файлов менее 100 КБ. См человек найти другие варианты размера

0 голосов
/ 02 марта 2012

find ./myRep/ -type f -size -1024k |xargs tar cfvz myArchive.tar

Одним словом, первая часть этого выражения создает список файлов, размер которых меньше 1024 КБ рекурсивно из ./myRep/, а вторая часть создает архив tar / gzip.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...