Рассматривая конкретный случай многосегментных ZIP- файлов,
это дополнительный ответ к основному .
Как уже говорилось в основном ответе, только некоторые инструменты архивации поддерживают разбиение, а основной графический интерфейс пользователя не способен создавать многосегментные архивы в zipформате. Альтернативные форматы могут быть использованы, а именно, rarи 7z.
Кроме того, только некоторые инструменты могут извлекать из многосегментных zip-файлов, таких как обсуждаемые здесь: об этом смотрите в конце этого ответа.
Поскольку этот вопрос конкретно касается проблемы обработки архивации из контекстного меню файлового менеджера , я рассмотрел некоторые команды, которые могут достичь данной цели даже для zipфайлов: такие команды, в случае успеха, могут быть легко добавлены в файловый менеджер как пункты контекстного меню.
Учитывая этот zipинструмент, многосегментные архивы могут быть созданы непосредственно с помощью команды, подобной zip my_archive.zip -r <file> -s 20971519(более подробно в этом вопросе ), но они совсем не полезны, потому что они не готовы к извлечению (нужна дополнительная zip -s 0команда для создания большого 1- файл извлекаемый архив - как описано здесь ), и этого ограничения нельзя избежать. Отправлять такой многосегментный архив кому-то, кто этого не знает, бессмысленно.
Как уже предлагалось в основном ответе, другой способ - сжать файл, а затем разделить однофайловый архив сsplit (или hjsplitGUI). (Я протестировал графический интерфейс и нашел его очень медленным, хотя для целей контекстного меню графический интерфейс не нужен.)
Идея состоит в том, чтобы добавить в контекстное меню файлового менеджера запись, которая одним щелчком мыши
- сжать выбранные файлы в один
zipфайл,
- разбить zip-файл на части указанного максимального размера и
- удалите его, чтобы сохранить только многофайловый архив.
Итак, я проверил с Thunar и пользовательское действие с этими тремя командами, связанными с &&:
zip -j my_archive.zip %F && split -b 20m my_archive.zip split.zip && rm my_archive.zip
(Это должно применяться к одному или нескольким выбранным файлам, но не к каталогам; для применения к каталогам необходима zip -rопция:
zip -r -j my_archive.zip %F && split -b 20m my_archive.zip split.zip && rm my_archive.zip
)
-jобозначает параметр для zip«мусорного пути»: в отличие от терминальной команды, содержащей полный путь к архивируемому файлу (файлам), команда контекстного меню, которая используется %Fдля выбранных файлов, добавит в архив входящую в папку папку. структура папки, если только -jона не используется; (источник: создать zip - игнорировать структуру каталогов );
my_archive.zipпользовательское имя еще не разделенного архива; splitкоманда будет применена к нему , а затем первые будут удаленыrm
%Fможет использоваться в настраиваемом действии Thunar для сжатия нескольких файлов как zip; альтернативно, %fдолжен использоваться для выбора только одного файла;
-b 20mобозначает размер отдельных частей архива, созданных splitкак указано здесь ;
split.zipэто спецификация, которая не нужна; это пользовательское имя конечного многофайлового архива, оно будет давать что-то вроде split.zipaa, split.zipab, split.zipac..., и без него будет выводиться имя, xза которым следуют aaфрагменты-суффиксы: xaa, xab, xac...и т. д .; есть splitвозможность -dиспользовать числовые суффиксы вместо буквенных, но это дает ошибку (потому что, очевидно, экстрактор ожидает стандартный многосегментный архив ZIP, когда видит числовой суффикс - как предложено в приватном чате Стивена Китта ;
rmПриложенный к my_archive.zipфайлу оставит нам только нужный многосегментный архив.
Заметка:
Для извлечения результирующего мульти-zip-архива необходим инструмент, который поддерживает aaархивы segmentetd , как file-rollerв Linux и 7-Zip в Windows.