2

У меня есть файл, в котором я хотел заархивировать и в то же время перенести на другой хост, используя scp.

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

Я неправ, чтобы использовать трубу | здесь ?

-bash-3.2$ gzip -c aum.dmp | scp oracle@192.168.0.191:/export/home/oracle/aum.dmp.gz
Usage: scp [-pqrvBC46] [-F config] [-S program] [-P port]
           [-c cipher] [-i identity] [-o option]
       [[user@]host1:]file1 [...] [[user@]host2:]file2

С уважением, Нуб

3 ответа3

4

gzip напишет в STDOUT, а scp не сможет справиться с этим.

пытаться

gzip -c aum.dmp | ssh -l  oracle 192.168.0.191 'cat > /export/home/oracle/aum.dmp.gz'

вместо.

где

  • gzip -c aum.dmp | gzip aum.dmp и отправит результат на стандартный вывод
  • ssh -l oracle 192.168.0.191 подключится к пользователю oracle 192.168.0.191
  • 'cat > /export/home/oracle/aum.dmp.gz' выполнит эту команду

'cat> /export/home/oracle/aum.dmp.gz'

  • cat захватит стандартный вывод (стандартный вывод из команды перед |)
  • > /export/home/oracle/aum.dmp.gz напишет на это /export/home/oracle/aum.dmp.gz

вся цель части cat, выполняемой на удаленном сайте, состоит в том, чтобы захватить результат gzip.

3

Вы можете использовать -C флаг для включения гр ompression в передаче scp Этого должно быть достаточно, хотя вы можете проверить man scp для получения более подробной информации о сжатии.

1

Если вам нужно получить файлы / каталоги с удаленного сервера в локальный архив, вы можете использовать tar + gzip внутри ssh и перенаправить на локальный файл. Например:

ssh user@server "sudo tar cvzf - /var/log/containers/**/*.log" > containers_logs.tgz

Куда:

  • c - создать архивный файл.
  • v - показать прогресс.
  • z - сжать с помощью gzip.
  • f - имя файла архива.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .