Хорошо, в последнее время я сталкивался с нечетным поведением. У меня есть маленький сценарий удара, который просто берет дамп 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 работает по удаленному серверу, и затем данные передаются по каналу по сети к этой локальной машине, затем сжатой и сохраненной в желаемом файле здесь.. не на удаленном?
Команда после символа вертикальной черты 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:
Не то, чтобы нечетный, Вы передаете вывод по каналу эти 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"