Я хочу сделать резервную копию базы данных 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"
Это работает, но я хотите скопировать файл в папку на моем удаленном сервере, а не в корневой папке.
Есть ли способ сделать это?
Спасибо
Разве это не проще?
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, он не знает точное имя файла из-за даты / часа / второй суффикс.
blockquote>Эта переменная "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