Есть ли другие варианты разархивировать файл в Ubuntu, кроме «разархивировать»? [закрыто]

11

Мой системный администратор сейчас недоступен, и у меня есть zip-файл на сервере, который я хотел бы разархивировать ... однако, в настоящее время у нас не установлены zip и unzip, и у меня нет прав root для их установки. ..

У меня нет вариантов? Есть ли другие вещи, которые могут разархивировать этот файл?

johnnietheblack
источник
Tar не установлен? tar -x
13
только что попробовал tar -x file.zip и похоже что-то делает ...
johnnietheblack
@ spuder вы должны оставить ответ на случай, если это сработает, и я буду вам голосовать
johnnietheblack

Ответы:

10

Я не пробовал этого, но есть zipfileмодуль в стандартной библиотеке Python начиная с версии 1.6, а с версии 2.6 был extractallметод

Вы должны быть в состоянии сделать что-то вроде:

  1. Создайте файл со следующим содержимым (отредактируйте его в соответствии с вашим вариантом использования).
  2. Сохраните файл как "unzipfile.py"
  3. Запустить с питоном unzipfile.py

И это будет добывать test.zipдо /home/user/directory.

import zipfile

with zipfile.ZipFile('test.zip', "r") as z:
  z.extractall("/home/user/directory")

Источник: https://stackoverflow.com/a/9432315/167299

В качестве альтернативы, BusyBox содержит распакованный «модуль», и если вы можете загрузить и запустить статически связанный BusyBox, вы можете использовать его для распаковки.

Том О'Коннор
источник
я попробовал первую часть этого и получил: «Импорт» программы можно найти в следующих пакетах: * imagemagick * graphicsmagick-imagemagick-compat - кстати ... я не понижал вас
johnnietheblack
Ой. Вы знаете, что вам нужно запустить его через Python?
Том О'Коннор
1
УХ ТЫ. похоже, это сработало .... Я успешно споткнулся в интерактивном режиме!
Johnnietheblack
2
Добро пожаловать в Python. Это круто
Том О'Коннор
2
Теперь вы можете просто вызвать модуль непосредственно из командной строки python -m zipfile -e monty.zip target-dir/(см. Docs.python.org/2/library/zipfile.html#command-line-interface )
Питер Гибсон,
11

Если вы javaустановили, jarкоманда может разархивировать заархивированный файл:

jar xvf file.zip 

Обратите внимание, что вы можете установить Java без прав доступа root: http://docs.oracle.com/javase/7/docs/webnotes/install/linux/linux-jdk.html

jlliagre
источник
1
Сегодня я узнал.
Том О'Коннор
Программа 'jar' может быть найдена в следующих пакетах: * default-jdk * fastjar * gcj-4.6-jdk * openjdk-6-jdk * gcj-4.5-jdk * openjdk-7-jdk Попросите вашего администратора установить один из их :(
Johnnietheblack
1
Смотрите мой ответ обновление.
jlliagre
Я немного боюсь устанавливать что-либо на сервер, опасаясь гнева моего системного администратора, но я обязательно попробую это, если потребуется.
Johnnietheblack
2

BSD / Mac OSX

Утилита tar, поставляемая с производными Mac и BSD, поддерживает извлечение zip-архивов из команды tar.

tar -xvf foo.zip

tar --version
bsdtar 2.8.3 - libarchive 2.8.3

Debian / RHEL

Архив tar, который поставляется с Ubuntu и другими, не поддерживает извлечение zip-файлов. Наилучшим вариантом будет отправка файла на компьютер с установленным zip-файлом.

tar -xvf foo.zip
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors

Тест дыма

echo "the quick brown fox jumped over the lazy dog" > bar.txt
zip -r bar.zip bar.txt
rm bar.txt
tar -xvf bar.txt
cat bar.txt
the quick brown fox jumped over the lazy dog

Обновить

Перепишите ответ, чтобы уточнить, что tar -xvf работает только на ОС BSD. Хотя это хорошая информация, в этом сценарии она не сработает.

spuder
источник
что делает -zxvf?
Johnnietheblack
когда я пытаюсь это сделать, я получаю tar: это не похоже на tar tar: переход к следующему заголовку ... означает ли это, что он потерпел неудачу или все еще работает?
Johnnietheblack
tarвозможность обрабатывать zip-файлы была бы расширением. Ubuntu tar (то есть GNU tar), похоже, не обеспечивает. -zпредназначен для сжатых файлов, а не для архивов (если это не совсем новое расширение).
Jlliagre
Означает ли это, если я загрузить GZIP это будет работать?
Johnnietheblack
Будет, но это не ваш вопрос ;-)
jlliagre
2

Я не верю, что есть другие способы разархивировать файл в системе без него unzip, но вы можете отправить файл в другую систему Linux (с разархивированным установленным или доступным root-доступом), разархивировать файл туда и - при необходимости - отправить разархивированный файл обратно на исходный сервер.

Команда для отправки файла с одного сервера на другой есть scp. Синтаксис для отправки файла:

scp <filename> <username>@<otherhostname>:<portnumber><fullpathtolocation>
e.g.: scp file.zip  user@server.example.com:2222/home/user/ 

Надеюсь это поможет!

Люк ван Донкерсгоед
источник
0

Скопируйте файл на другой компьютер, разархивируйте и скопируйте обратно.

dmourati
источник