Архив с длинным именем файла внутри – unarchiver достигает предела файловой системы и не работает

У меня есть unarchiver, который принимает имя архива и имя каталога, а также выгружает все файлы из этого архива в этот каталог. Нет других параметров командной строки. Тем не менее, кто-то заархивировал файл в архиве, который я ищу для распаковки, с 500-ичными символами в имени файла, и теперь эта программа терпит неудачу, когда она попадает в этот файл (практически все файловые системы имеют предел 256). Какой у меня вариант, если не изменить исходный код и перекомпилировать unarchiver?

Я должен установить что-то в качестве каталога, в котором будут записываться файлы, которые записывает unarchiver, и выгружать их в другом месте – возможно, даже как один большой файл. Это не должно посылать сообщения об ошибках, даже если некоторая запись действительно закончилась неудачей.

Я попытался установить каталог как файл, однако этот каталог должен иметь базовую файловую систему, а затем он имеет те же ограничения, что и исходная FS.

Я также попытался использовать канал, но после него не может быть аргументов (например, /pipe/reallylongfilename ). Что-то вроде этого возможно?

Архив – .zim . Я использую инструмент zimdump из библиотеки OpenZim.

One Solution collect form web for “Архив с длинным именем файла внутри – unarchiver достигает предела файловой системы и не работает”

Если вы знаете это очень длинное имя, вы можете попробовать отредактировать его внутри архива, используя hex-редактор (или sed ?). Работайте с копией, если вам нужно начинать с нуля.

Пусть пример filename будет very-long-filename . Разумные углы атаки:

  • very/long/filename ,
  • very//////filename ,
  • very0long-filename где 0 указывает символ NULL ( 0x00 ),
  • very00000000000000 ( 0 как указано выше).

В общем случае нецелесообразно удалять символы (что делает архив меньше). Он изменяет важные смещения внутри архива и, вероятно, испортит его.

Я сделал тест с .zip файлом. Я признаю, что мое very-long-filename не было слишком длинным. Мне удалось сделать это короче, и, возможно, эти методы будут работать и для слишком длинных имен. В моем тесте мне пришлось отредактировать два фрагмента файла, потому что каждое имя файла в .zip хранилось дважды .

Вы использовали слово «zipped», но четко не указали, что такое ваш архив. Как бы то ни было, я надеюсь, что он сохранит имена файлов в текстовом виде, и вам удастся их редактировать. Удачи.

  • слияние файлов txt с похожим именем
  • Защита данных от битовой гнили
  • Как часто создается резервный файл / etc / shadow?
  • Перемещение нескольких файлов из нескольких каталогов в исходный адрес
  • Как я могу зашифровать файл?
  • Как перенаправить операции ввода / вывода файлов процесса в память или другой файл?
  • Задание аргумента команды `~ / bin / *` имена файлов из любого каталога в bash
  • Копирование родительского каталога в подкаталог без бесконечной петли
  • Как определить, сколько файлов находится в каталоге без учета?
  • binary может запускаться только при запуске после создания символической ссылки на него
  • Что является допустимым вариантом использования для разрешения «выполнить только»?
  • Interesting Posts

    grep a awk string из файла и записать в другую часть файла строки

    Мой сетевой адаптер присутствует, но с помощью команды «lshw» показано, что «устройство не заявлено». Как заявить этот драйвер / устройство?

    Установка debian с использованием KDE, которая не требует systemd

    Как добавить условие в цикл for во время подстановки, если строка равна нулю

    Используйте SED или AWK для перемещения строк по столбцам

    /etc/cron.daily/foo: отправить электронное письмо конкретному пользователю вместо root?

    Как отключить респаун для терминала?

    Синтаксическая ошибка C Shell Script «неожиданный конец файла»

    Как регистрировать все системные вызовы, выполненные процессом, и все его потомки с помощью auditd

    сменить локальную группировку

    "Grep: Непревзойденная ошибка [" при использовании регулярного выражения

    Что приводит к тому, что копия / вставка в терминале иногда выполняет команду?

    Копировать / домой без root

    Печать ассоциативной массивы BASH

    Не удалось установить perf на slackware 13.1

    Linux и Unix - лучшая ОС в мире.