Как заархивировать очень длинный список файлов в переменной среды: *** Обнаружено переполнение буфера ***: zip прекращен - PullRequest
0 голосов
/ 12 апреля 2019

Я копирую файлы с одного компьютера на другой. Меня интересуют только файлы, возраст которых превышает N дней, поэтому я использовал find для создания списка имен файлов следующим образом:

DAYS_OLD=7
FILEs=`find /some/path -mtime -$DAYS_OLD | xargs`

Теперь я хочу сжать файлы в один архив:

ZIPFILE='myfiles.zip'. 

Я запускаю следующую команду:

zip -r $ZIPFILE "${FILEs}"

Я получаю следующую ошибку:

* Обнаружено переполнение буфера *: zip прекращен

Как мне сжать файлы (в переменной среды $ {FILEs}) в zip-архив?

Ответы [ 3 ]

1 голос
/ 12 апреля 2019

В одну сторону:

find /some/path -mtime -$DAYS_OLD | xargs zip -r $SOMEDIR/$ZIPFILE
0 голосов
/ 12 апреля 2019

Попробуйте с помощью

zip $ZIPFILE -i@<(find /some/path -mtime -$DAYS_OLD)

параметр -i говорит zip прочитать список из файла.Файл будет смоделирован на лету с содержимым команды.

0 голосов
/ 12 апреля 2019

Используйте find /some/path -mtime "$DAYS_OLD" -exec zip -r "$ZIPFILE" {} + для работы с любым допустимым именем файла, в том числе с символами новой строки в их именах.

...