Shell脚本在远程SFTP服务器上移动文件

时间:2019-01-27 19:17:14

标签: linux rename sftp expect

在本地下载文件后,我试图通过外壳程序脚本将文件从一个目录移动到远程SFTP服务器上的另一个目录。我了解没有通配符移动文件功能,因此似乎唯一的选择是分别重命名文件。

如果有更好的编写此代码的方法,有人可以帮助我使用下面的代码。

一旦文件下载到本地目录后,我要做的就是将文件移动到SFTP服务器上的存档目录中。

我知道还有其他处理python / perl脚本的方法,但是我只能在Linux机器上使用Shell脚本。

#!/usr/bin/ksh


#LOGGING
LOGFILE="/tmp/test.log"

#SFTP INFO
FTP_SERVER="test.rebex.net"
FTP_USER="demo"
FTP_PWD="password"
FTP_PORT=22
FTP_PICKUP_DIR="/"
LOCAL_DIR="/"


#-------DOWNLOAD FILES
expect <<END #> $LOGFILE
 send "$(date)\r";
 spawn sftp $FTP_USER@$FTP_SERVER 
 expect "*password: " 
 send "$FTP_PWD\r"; 
 expect "sftp> "
 send "mget *.ext\r"  
 expect "sftp>"
 send "exit\r"
END


#--------- MOVE FILES TO ARCHIVE ON SERVER
cd /home/ravi/Files

for fl in *.ext
do

expect <<END #> $LOGFILE
 send "$(date)\r";
 spawn sftp $FTP_USER@$FTP_SERVER 
 expect "*password: " 
 send "$FTP_PWD\r"; 
 expect "sftp> "
 send "rename $fl /ARCHIVE/$fl\r"  
 expect "sftp>"
 send "exit\r"
END

done 
#For Loop End

1 个答案:

答案 0 :(得分:1)

您可以将lftpmmv选项一起使用

mmv [-O directory] file(s) directory

  Move  specified  files  to a target directory. The target directory can be specified after -O
  option or as the last argument.

       -O <dir>   specifies the target directory where files should be placed

Reference

示例用法

lftp -u $FTP_USER,$FTP_PWD sftp://$FTP_SERVER:22 <<EOF
   mmv dir/to/path /dir/to/renamed/path
   EOF