linux sftp shell脚本,bash脚本在sftp下载完文件时就不再执行后面的命令?

SFTP保存到本地的路径: /home/user/db_bak/

你给 mv 程序的本地文件路径: /home/user/db.bak/

比较一下上面两个路径有有什么不同。给 mv 不正确的本地路径它当然不会给你移动。

我没有在shell脚本中使用过sftp,不知道sftp执行完是不是也给了shell结束的信号导致下方的命令不再执行。

个人一点建议:为什么不使用相对更安全和稳定的ssh(scp)呢?你没有服务器的权限?如果有权限还是建议使用scp吧。这样你就可以少写几行命令

version 1:

#/usr/bin/env bash

scp user@ip:/file/path /home/user/local/path

mv /old/path/file /new/path/file

echo "Done!"

version 2: 加上判断,更准确一些

#/usr/bin/env bash

scp user@ip:/file/path /home/user/local/path

# 如果你从服务器复制到本地的是目录,就把下面中括号的 -f 改成 -d

if [ -f "/local/path/file" ]; then

mv /local/path/file /new/path/file

else

echo "文件不存在!"

fi

if [ -f "/new/path/file" ]; then

echo "Done!"

else

echo "目标目录文件不存在"

fi

version 3: 被你带跑偏了,为什么不能直接scp到最终的目录呢。唉...

#/usr/bin/env bash

echo "第一步:开始复制远程文件到本地"

scp user@ip:/var/www/app/db/app.db /home/user/db_bak/

if [ -f "/home/user/db_bak/app.db" ]; then

echo "文件成功从服务器复制到本地!"

else

echo "备份失败"

fi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值