通过 FTP 客户端将文件从 ftp:/remote-dir 上传到 ftp:/remote-dir

通过 FTP 客户端将文件从 ftp:/remote-dir 上传到 ftp:/remote-dir

我在用着ncftpput将我的 Linux 服务器中的本地文件上传到 FTP。除了使用 FTP 移动文件\目录之外,是否有任何方法可以执行相同的操作?正如我在标题中提到的?

我确实知道“ncftp 重命名“但这对我来说不好,因为我不能在我的 bash 脚本中使用它。

ncftpput 非常适合上传本地文件,但它不支持从以下位置移动\复制文件远程目录远程目录

如果您有 ncftpput 的任何等效\替代品,请分享。

预先感谢,埃迪姆

答案1

除非有您没有透露的原因,否则要使用 ncftp 而不是普通 ftp,您可以通过在脚本中使用普通旧 ftp 来完成此操作,如下所示:

#!/bin/bash
HOST='some.host.name.com'
USER='username'
PASSWD='password'
SOURCE='/home/username/file.ext'
TARGET='/var/tmp/file.ext'

ftp $HOST <<EOC
user $USER
$PASSWD
rename $SOURCE $TARGET
quit
EOC

# go on with your bash script from this point on 

答案2

您可以利用保险丝

基于 ftp 连接创建 2 个融合目录端点,然后执行常规复制命令或更复杂的命令。

假设您正在使用基于 apt 的发行版(但与 yum 相同,等等..)


安装curftpfs包:

apt-get install curlftpfs

创建一个链接到 ftp 的目录:

mkdir /mnt/ftp1

对第二个执行相同操作:

mkdir /mnt/ftp2

连接主机1和主机2:

curlftpfs user1:pass1@host1 /mnt/ftp1
curlftpfs user2:pass2@host2 /mnt/ftp2

执行简单的复制命令

cp -R /mnt/ftp1/somedir /mnt/ftp2

完成后,您只需卸下 2 个支架即可

umount /mnt/ftp1
umount /mnt/ftp2

评论:
这个解决方案使用普通的 ftp,如果你想利用加密的额外优势,你可以使用 ftps 与等效命令,或者在 shell ftp sftp 的情况下,但你说一台机器是 Windows,所以除非使用像 cygwin 这样的东西,我猜 sftp 已经超出了问题。

相关内容