Как извлечь архив через сеть

Попытайтесь запустить не саму программу, но сценарий, запускающий эту программу, и регистрирующийся это - вывод STDERR и среда.

Также необходимо было посмотреть в журналы веб-сервера.

8
11.09.2013, 09:46
3 ответа

Я полагаю, что Вы могли сделать что-то вроде этого:

$ cat archive.tar.gz | ssh server2 "tar zxvf -"

Если необходимо управлять каталогом, где он извлечен к на server2:

$ cat archive.tar.gz | ssh server2 "cd /path/to/dir; tar zxvf -"

Солярис

Учитывая Вы находитесь на Солярисе, Ваша версия tar, вероятно, не будет включать ни одной из функций сжатия, которые предлагает tar GNU. Бойтесь не, можно все еще сделать эту команду, мы просто должны анализировать кошку archive.tar.gz в команду, которая может сначала распаковать tarball.

Что-то вроде этого должно сделать:

$ cat archive.tar.gz | ssh server2 "(cd /some/dir; gunzip | tar xf -)"

Или это:

$ gzip -dc < sample.tar.gz | ssh server2 "cd /path/to/dir; tar xvf -"

Или это:

$ gunzip sample.tar.gz | ssh server2 " cd /path/to/dir; tar xvf -"
13
27.01.2020, 20:10
  • 1
    tar не понимает x флаг. Так любое использование gtar (Tar GNU), если это установлено, или лучшее использование tar и gunzip. –  Marco 11.09.2013, 10:32
  • 2
    @Marco - благодарит, я полностью забыл, что те переключатели не присутствуют в версии Solaris tar, позвольте мне повторно сформулировать его. –  slm♦ 11.09.2013, 10:34
  • 3
    @Marco - посмотрите обновления. –  slm♦ 11.09.2013, 10:43
  • 4
    Почему Вы распаковываете прежде ssh? Это кажется лучшим IMO: cat archive.tar.gz | ssh server2 "(cd /some/dir; gunzip; tar xf -)" –  Marco 11.09.2013, 10:48
  • 5
    Каждая версия Соляриса поставляет с g (ООН) zip, поддержка zip просто не компилируется в tar. –  Marco 11.09.2013, 10:50
ssh server2 < archive.tar.gz

Вы не передаете команды ssh, таким образом, это выполняет оболочку на удаленной стороне. Содержание archive.tar.gz передаются той оболочке на ее стандартном входе, таким образом, она пытается проанализировать его как сценарий оболочки. Веселье может последовать, или не, в зависимости от содержания файла.

Не ясно в Вашем описании, куда Вы выполняете эти команды. Если Вы находитесь на server1, имеете archive.tar.gz на server1, и хотят извлечь архив на server2, затем передать архив по каналу к server2 и выполнить команду извлечения туда.

<archive.tar.gz ssh server2 'cd /home && gunzip | tar -xf -'

С другой стороны, войдите в систему server2, смонтируйте файловую систему server1 по sshfs и распакуйте архив точно так же, как Вы распаковали бы локальный файл.

mkdir /tmp/server1
sshfs server1:/ /tmp/server1
cd /home
gunzip </tmp/server1/path/to/archive.tar.gz | tar -xf -
fusermount -u /tmp/server1
1
27.01.2020, 20:10
  • 1
    , ничего себе, sshfs является потрясающим! –  knocte 02.06.2016, 17:19

Вы можете расширить архив в определенную существующую директорию без использования команды cd следующим образом:

$ cat archive.tar.gz | ssh server2 "tar zxvf - -C /path/to/dir"

Если вы не знаете, выходит ли директория, вы можете использовать это:

$ cat archive.tar.gz | ssh server2 "mkdir -p /path/to/dir && tar zxvf - -C /path/to/dir"
0
27.01.2020, 20:10

Теги

Похожие вопросы