我正在编写一个 Linux shell 脚本,将本地目录复制到远程服务器(删除任何现有文件)。
本地服务器: ftp
并lftp
可以使用命令,不 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 安装它。