我想备份 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"
它可以工作,但我想将文件复制到远程服务器上的文件夹中,而不是根文件夹中。
有没有办法做到这一点?
谢谢
答案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