Понять поведение сценария при работании на основе SSH

Хорошо, в последнее время я сталкивался с нечетным поведением. У меня есть маленький сценарий удара, который просто берет дамп mysql удаленно, и затем храните данные на самом сервере, которые позже получают rsynced к серверу резервного копирования.

#!/bin/sh
/usr/bin/ssh -p 82001 user@remotehost  "mysqldump -u db_user -pSomePass mydb" |  gzip -c >  /sql/mybackup.sql.gz

Но что я вижу, что файлы создаются на локальном сервере под/sql, но не на удаленном сервере.

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

2
задан 3 July 2015 в 21:28

2 ответа

Команда после символа вертикальной черты gzip -c > /sql/mybackup.sql.gz работает на Вашей локальной машине.

необходимо использовать

/usr/bin/ssh -p 82001 user@remotehost  "mysqldump -u db_user -pSomePass mydb |  gzip -c >  /sql/mybackup.sql.gz"
<час>

Пример:

% ssh user@host "echo remote" | echo local  
local
user@host's password:

% ssh user@host "echo remote | echo local"
user@host's password:
5
ответ дан 2 December 2019 в 01:30

Не то, чтобы нечетный, Вы передаете вывод по каналу эти ssh команда в Вашей оболочке; необходимо передать его по каналу в оболочке на удаленном сервере:

#!/bin/sh
/usr/bin/ssh -p 82001 user@remotehost  "mysqldump -u db_user -pSomePass mydb | gzip -c >  /sql/mybackup.sql.gz"

Также ум, который Вы не используете bash, но sh. Использовать bash:

#!/bin/bash
/usr/bin/ssh -p 82001 user@remotehost  "mysqldump -u db_user -pSomePass mydb | gzip -c >  /sql/mybackup.sql.gz"
4
ответ дан 2 December 2019 в 01:30

Другие вопросы по тегам:

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