![通过 FTP 客户端将文件从 ftp:/remote-dir 上传到 ftp:/remote-dir](https://linux22.com/image/86217/%E9%80%9A%E8%BF%87%20FTP%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%B0%86%E6%96%87%E4%BB%B6%E4%BB%8E%20ftp%3A%2Fremote-dir%20%E4%B8%8A%E4%BC%A0%E5%88%B0%20ftp%3A%2Fremote-dir.png)
我在用着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 已经超出了问题。