![使用 SSH 将文件复制到远程服务器](https://linux22.com/image/911100/%E4%BD%BF%E7%94%A8%20SSH%20%E5%B0%86%E6%96%87%E4%BB%B6%E5%A4%8D%E5%88%B6%E5%88%B0%E8%BF%9C%E7%A8%8B%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我想备份 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