Мне нужно сжать большой файл около 17-20 ГБ. Мне нужно разделить его на несколько файлов размером около 1 ГБ на файл.
Я искал решение с помощью Google и нашел способы использования split
и cat
команды. Но они не работали для больших файлов вообще. Кроме того, они не будут работать в Windows; Мне нужно извлечь его на машине Windows.
Ответы:
Вы можете использовать
split
команду с-b
опцией:Его можно собрать на компьютере с Windows, используя ответ @ Joshua .
Изменить : как @Charlie заявил в комментарии ниже, вы можете явно установить префикс, потому что он будет использовать
x
иначе, что может сбить с толку.Изменить : Редактирование сообщения, потому что вопрос закрыт, и наиболее эффективное решение очень близко к содержанию этого ответа:
Это решение позволяет избежать необходимости использовать промежуточный большой файл при (де) сжатии. Используйте опцию tar -C, чтобы использовать другой каталог для результирующих файлов. Кстати, если архив состоит только из одного файла, можно избежать tar и использовать только gzip:
Для Windows вы можете скачать перенесенные версии тех же команд или использовать Cygwin.
источник
-b 1024MiB
дало ошибку, что это было неправильное число байтов. Использование--bytes=1024m
работ.cat
чтобы собрать файл. Вы можете использоватьcopy /b file1 + file2 + etc..
в Windows, затем скопировать обратно в Linux, и tar сможет прочитать заново собранный tarball. Я только что попробовал это.--numeric-suffixes
: использовать числовые суффиксы вместо буквенных.Если вы отделяетесь от Linux, вы все равно можете собрать его в Windows.
источник
copy /b file* filetogether
- support.microsoft.com/kb/71161использовать tar для разделения на несколько архивов
Есть много программ, которые будут работать с файлами tar в Windows, включая Cygwin.
источник
Протестированный код сначала создает один файл архива, затем разбивает его:
В этом варианте пропускается создание одного архивного файла, и сразу переходят к созданию деталей:
В этом варианте, если размер файла архива делится на
$CHUNKSIZE
, то последний частичный файл будет иметь размер файла 0 байт.источник
split
уже делает.