linux - 用于在远程 SFTP 服务器上移动文件的 Shell 脚本
问题描述
在本地下载文件后,我试图通过 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
解决方案
你可以lftp
使用mmv
选项
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
示例用法
lftp -u $FTP_USER,$FTP_PWD sftp://$FTP_SERVER:22 <<EOF
mmv dir/to/path /dir/to/renamed/path
EOF
推荐阅读
- javascript - 使用复选框过滤带有 JSON 的元素
- javascript - 网页上多行文本的省略号 + 引号
- c# - C# - Signalr 客户端连接导致性能问题 Windows 服务
- python - 解析 Pandas 作为列表返回
- angular - Angular 中的 Firebase 身份验证
- webpack - 使用 webpack 提供 index.html 以外的服务
- sql - 谓词中的 CASE 中为 NULL
- node.js - 打字稿:sharp.js 将流转换为多种尺寸并将其上传到 S3
- visual-studio-code - 在 VS 代码片段中如何重用像变量一样的转换以避免一次又一次地编写转换?
- javascript - 使用 Google 文档中的 Google Apps 脚本更改光标所在单词的颜色