gpt4 book ai didi

linux - 用于在远程 SFTP 服务器上移动文件的 Shell 脚本

转载 作者:太空狗 更新时间:2023-10-29 11:17:02 24 4
gpt4 key购买 nike

在本地下载文件后,我试图通过 shell 脚本将文件从一个目录移动到远程 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

最佳答案

您可以使用带有mmv 选项的lftp

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

关于linux - 用于在远程 SFTP 服务器上移动文件的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54391948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com