我正在尝试创建一个创建mysql转储的shell脚本,然后将其放在另一台计算机上。我已经设置了无密钥ssh和sftp。下面的脚本在运行时在本地计算机上创建mysql转储文件,并且不会抛出任何错误,但是文件“dbdump.db”永远不会放在远程计算机上。如果我执行sftp连接并手动输入命令,那么它就可以工作。
mysql_backup.sh的内容
mysqldump --all-databases --master-data > dbdump.db
sftp -b /home/tim tim@100.10.10.1 <<EOF
put dbdump.db
exit
EOF
答案 0 :(得分:3)
尝试使用在您的情况下应该更容易的scp。
scp dbdump.db tim@100.10.10.1:/home/tim/dbdump.db
sftp和scp都在使用SSH。
答案 1 :(得分:1)
请将mput / put命令写入一个文件(file_contains_put_command)并尝试以下命令。
sftp2 -B file_contains_put_command /home/tim tim@100.10.10.1 >> log_file
示例:
echo binary > sample_file
echo mput dbdump.db >> sample_file
echo quit >> sample_file
sftp2 -B sample_file /home/tim tim@100.10.10.1 >> log_file
答案 2 :(得分:0)
你最初的方法是工作的几个字符。你告诉sftp从/ home / tim -b /home/tim
读取它的批处理命令。因此,如果将其更改为-b -
,则应从stdin中读取它的批处理命令。
除此之外,如果-b / home / tim旨在远程更改目录,您可以将cd /home/tim
添加到此处的文档中。
mysqldump --all-databases --master-data > dbdump.db
sftp -b - tim@100.10.10.1 <<EOF
put dbdump.db
exit
EOF