Скопируйте файл на удаленный сервер, используя SSH

Я хочу сделать резервную копию базы данных mysql и скопировать ее на удаленный сервер.

Я делаю:

mysqldump -uroot myDb>$HOME/myDb.sql && tar czf - $HOME/myDb.sql | ssh root@ip "dd of=$HOME/myDb_$(date +\%Y\%m\%d\%H\%M\%S).tar.gz" $HOME/backup/myDb

Это не работает, я получаю:

dd: opérande «/home/backup/myDb» non reconnu

Когда я делаю

mysqldump -uroot myDb>$HOME/myDb.sql && tar czf - $HOME/myDb.sql | ssh root@ip "dd of=$HOME/myDb_$(date +\%Y\%m\%d\%H\%M\%S).tar.gz"

Это работает, но я хотите скопировать файл в папку на моем удаленном сервере, а не в корневой папке.

Есть ли способ сделать это?

Спасибо

4
задан 27 April 2019 в 12:17

1 ответ

Разве это не проще?

d = $(date +%Y%m%d%H%M%S)
mysqldump -uroot myDb>$HOME/myDb.$d.sql 
tar czf - $HOME/myDb.$d.sql
scp $HOME/myDb.$d.sql root@ip:$HOME/backup/

Ошибка в вашей команде: последняя часть рассматривается как часть команды dd. Не является частью команды ssh.

===

относительно комментариев:

дело в том, что когда выполняется scp, он не знает точное имя файла из-за даты / часа / второй суффикс.

Эта переменная "d" не меняет своего содержимого с течением времени:

rinzwind@schijfwereld:~$ d=$(date +%Y%m%d%H%M%S)
rinzwind@schijfwereld:~$ echo "$d"
20190427115534
rinzwind@schijfwereld:~$ echo "$d"
20190427115534
rinzwind@schijfwereld:~$ echo "$d"
20190427115534
rinzwind@schijfwereld:~$ echo "$d"
20190427115534
rinzwind@schijfwereld:~$ echo "$d"
20190427115534
0
ответ дан 27 April 2019 в 12:17

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

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