如何仅使用 ftp 或 lftp 将目录递归上传到 FTP 服务器?

如何仅使用 ftp 或 lftp 将目录递归上传到 FTP 服务器?

我正在编写一个 Linux shell 脚本,将本地目录复制到远程服务器(删除任何现有文件)。

本地服务器: ftplftp可以使用命令, ncftp或任何图形工具。

远程服务器:仅可通过 FTP 访问。无 rsync、SSH 或 FXP。

我正在考虑列出本地和远程文件来生成 lftp 脚本然后运行它。有没有更好的方法?

注意:仅上传修改过的文件是优点,但不是必需的。

答案1

lftp应该能够一步完成此操作,特别是使用lftp mirror

lftp 命令语法令人困惑,我发布的原始调用不起作用。请尝试如下操作:

lftp -e “镜像 -R {本地目录} {远程目录}” -u {用户名},{密码} {主机}

笔记开关参数周围的引号-e

答案2

cd {local_dir}
lftp {server}
cd {remote_dir}
mput {local_dir}/*

这对我来说很有效,其他许多尝试都失败了。一旦进入 lftp,可以通过以下方式获取更多信息:

help mput

答案3

根据 Phil 使用 lftp 镜像模式的想法,这个命令可以达到目的:

lftp -c 'open -e "mirror /tmp/thedir ftp://nico:mypass@remotehost/~/destination/" ftp://nico:mypass@localhost'

缺点是它要求本地服务器运行 FTP 服务器。

答案4

终于得到答案了!创建 shell 脚本 ftpmirror.sh

#!/bin/bash 
path = /local-dir-path
lftp -e "mirror -R $path /$path" -u username,password ftp-server-ip
  • Path = 我们要复制到 ftp 服务器的本地目录
  • 用户名 = ftp 服务器用户名
  • 密码 = ftp 服务器密码
  • ftp-server-ip = ftp 服务器的 IP 地址

如果未安装 lftp 包,则使用 yum 安装它。

相关内容