编写在 FTP 服务器上移动文件的脚本

编写在 FTP 服务器上移动文件的脚本

我正在尝试将 FTP 服务器上的多个文件移动到不同的目录。到目前为止,我已经编写了一个 bash 脚本,它将登录并检索远程目录中的任何新文件,但 ftp 命令不支持“mv”命令。本质上,该脚本将下载新文件,然后下载后将文件移动到同一服务器上的不同目录。

在您回答之前,请注意这需要自动化,因此使用像 Filezilla 这样的 GUI 对我没有帮助,因为我必须登录到各种 ftp 站点并手动移动文件,另外,请记住我无法 ssh进入任何服务器,因为它们是由其他公司管理的,并且 ftp 访问是我所能获得的。最后一件事,我不知道文件名是什么,所以使用通配符。

答案1

由于您似乎可以使用脚本成功登录,因此以下是该脚本登录后的命令。

  • 与常识相反改名命令将移动文件

    重命名 /path/to/file/to/move /path/to/files/destination/

  • 这应该与通配符一起使用,例如 mp4

    重命名/path/to/files/*.mp4 /path/to/destination/

希望这就是您正在寻找的!

来源:https://stackoverflow.com/questions/9461844/how-to-move-files-using-ftp-commands

答案2

FTP 没有 mv 命令。您必须使用重命名命令

其概念是生成一个待办事项文件,将每个文件一一
完整的脚本重命名(移动),以实现移动多个文件。
1. 使用 mls 命令从 ftp 服务器获取文件列表
2. 生成待办事项列表文件
2.1 获取文件,对于演示,您可以对文本文件执行更多操作
2.2 重命名(移动文件)
3. 使用待办事项列表文件执行 ftp 命令

#!/bin/sh
clear
# change local directory
cd [local-directory]

#collect file names
ftp -ni ftp.abccompany.com <<EOF
user [user] [password]
cd /OUT
mls abc*.* list.txt 
quit
EOF

# create ftp action list
echo >>todo.lst user [user] [password]
while read N
do
    #echo >>todo.lst cd /OUT #for demo you can do more actions on text file
    #echo >>todo.lst get $N  #for demo you can do more actions on text file
    echo >>todo.lst rename $N ARCHIVE/$N #did not change file name, move directory only
done <list.txt

echo >>todo.lst quit

# ftp transfer process
ftp -nv ftp.abccompany.com <todo.lst

# cleanup
rm todo.lst

相关内容