Как вы используете команду Linux split
для разбиения zip-файла на несколько небольших ZIP-файлов?Сплит с ошибкой
У меня есть большой архив zip, содержащий один файл, содержащий миллионы строк, которые мне нужно обработать. К счастью, обработка может быть выполнена параллельно, поэтому я хочу разбить zip на N частей, чтобы предоставить процессорам, работающим на нескольких машинах.
настоящее время я использую эту команду, чтобы разделить один массивный архив почтового индекса в 10 небольших почтовых архивов:
gunzip -c original.zip | split -l 10 - 'smaller-part-' --additional-suffix='.txt' --filter='gzip >> $FILE.zip'
На моем локальном хосте под управлением Ubuntu 16, это работает отлично. Однако на другом сервере под управлением Ubuntu 16, эта команда таинственно завершается с ошибкой:
split: with FILE=smaller-part-aa.txt, exit 1 from command: gzip >> $FILE.zip
Почему выход с кодом ошибки? Даже если я укажу --verbose
, он не дает никаких дополнительных пояснений.
Редактировать: Проблема, похоже, связана с пользователем, выполняющим команду. На сервере, бросающем ошибку, я запускаю ее как пользовательский пользователь buildbot
в оболочке, запущенной как sudo -u buildbot bash
. Однако все файлы и каталоги принадлежат этому пользователю. Когда я запускаю команду как пользователь ubuntu по умолчанию, она работает правильно. Зачем нужна ошибка gunzip/split/gzip при запуске как пользовательский пользователь?