我有一段bash脚本如下,将远程机器上的数据库下载到本地进行使用:
#!/bin/bash
sftp user@11x.1xx.1x.2xx<<EOF
get /var/www/app/db/app.db /home/user/db_bak/
quit
EOF
mv /home/user/db_bak/app.db /var/www/app/db/
echo "done"
问题是文件下载完成,但是mv /home/user/db.bak/app.db /var/www/app/db/
和echo "done"
并未执行,这是为什么呢?刚接触,goole了半天也没有结果,求大神指点。
SFTP儲存到本機的路徑:
/home/user/db_bak/
你給 mv 程式的本機檔案路徑:
/home/user/db.bak/
比較一下上面兩條路徑有什麼不同。給 mv 不正確的本地路徑它當然不會給你移動。
我沒有在shell腳本中使用過sftp,也不知道sftp執行完是不是也給了shell結束的訊號導致下方的指令不再執行。
個人一點建議:為什麼不使用相對較安全和穩定的ssh(scp)呢?你沒有伺服器的權限?如果有權限還是建議使用scp吧。這樣你就可以少寫幾行指令