当前位置: 首页 > 知识库问答 >
问题:

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

宗政永望
2023-03-14

我正在尝试将FTP服务器上的多个文件移动到同一服务器上的不同目录。到目前为止,我已经编写了一个bash脚本,该脚本将登录并检索远程目录中的任何新文件,但ftp命令不支持“mv”命令。本质上,该脚本将下载新文件,然后在下载后将文件移动到同一服务器上的不同目录。请注意,每次文件名都会不同,因此通配符的使用很重要。

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

非常感谢任何帮助或指导。

谢谢!

共有2个答案

燕元明
2023-03-14

实现移动多个文件的完整脚本
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
    echo >>todo.lst get $N
    echo >>todo.lst rename $N ARCHIVE/$N
done <list.txt

echo >>todo.lst quit

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

# cleanup
rm todo.lst
夏英发
2023-03-14

也许ftp中的重命名命令可以为您工作?

rename [from [to]]
       Rename the file from on the remote machine, to the file to.

我用我放在服务器上的旧文件对它进行了抨击,它似乎做了你想要的:

ftp> ls tmp/test*
229 Entering Extended Passive Mode (|||55572|)
150 Accepted data connection
-rw-r--r--    1 sinasohn   sinasohn           21 Mar 31 16:37 tmp/testfile01
226-Options: -a -l 
226 1 matches total

ftp> ls tmp2/test*
229 Entering Extended Passive Mode (|||64715|)
150 Accepted data connection
226-Options: -a -l 
226 0 matches total

ftp> rename tmp/testfile01 tmp2/testfile01
350 RNFR accepted - file exists, ready for destination
250 File successfully renamed or moved

ftp> ls tmp/test*
229 Entering Extended Passive Mode (|||56698|)
150 Accepted data connection
226-Options: -a -l 
226 0 matches total

ftp> ls tmp2/test*
229 Entering Extended Passive Mode (|||50239|)
150 Accepted data connection
-rw-r--r--    1 sinasohn   sinasohn           21 Mar 31 16:37 tmp2/testfile01
226-Options: -a -l 
226 1 matches total
ftp> 

为了清楚起见,我在这里的命令之间放置了空白行。

希望这有帮助!

 类似资料:
  • 我遇到了以下场景 将文件从FTP服务器下载到本地并进行处理 例如:FTPSERVER/dir/file_name= < li >处理后,将FTP服务器中的文件移动到其存档文件夹中 例如:FTPSERVER/dir/file_name= 我必须使用shell脚本来完成这项工作。我已经完成了第一部分使用 ncftpget -u $USER -p $PASS $HOST/DIR/$FILENAME 我不

  • 问题内容: 我正在尝试编写一个代码,以在我的独立服务器上打开FTP服务器,以便可以将文件从FTP服务器复制到另一台计算机上的客户端,反之亦然。 我得到了Apache FtpServer,但对其使用感到有些困惑,并且正在寻找使用它的基本步骤。也许像这样: 做连接命令 登录 做一些事情… 问题答案: 让我使用非常有用的 Apache FtpServer 为您编写一个基本示例: 请注意,在服务器端,您不

  • 你好,我有错误,如java.lang.NullPointerException上OutputStream out=ftp.storeFileStream(路径);. 你能帮帮我吗?代码编写了第一个图像,并完全停止了编写。这是我的方法代码。。。。。。。。 我将发布两个单独的代码。事实上这是一种方法。 这是NPE错误! java.lang.NullPointerException atcom.scm.

  • 本文向大家介绍Shell脚本实现上传zip压缩文件到FTP服务器,包括了Shell脚本实现上传zip压缩文件到FTP服务器的使用技巧和注意事项,需要的朋友参考一下

  • 问题内容: 我创建了一个从有权访问的FTP服务器下载文件的功能。如何将文件上传回FTP服务器? 以下是我使用的download_files方法: 问题答案: 使用Apache Commons Net库中的FTPClient类。 这是一个带有示例的代码段: 摘录自http://www.kodejava.org/examples/356.html

  • 本文向大家介绍FtpHelper实现ftp服务器文件读写操作(C#),包括了FtpHelper实现ftp服务器文件读写操作(C#)的使用技巧和注意事项,需要的朋友参考一下 最近做了一个项目,需要读取ftp服务器上的文件,于是参考了网上提供的一些帮组方法,使用过程中,出现一些小细节问题,于是本人做了一些修改,拿来分享一下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。