任何Unix:
我有以下 cmd 行,它工作正常。
rsync -avr -e ssh /home/dir [email protected]:/home/
但我现在需要将其设置为 rsync 到只有一个 FTP 服务器的远程服务器。我该怎么做?
我查看了 rsync 帮助,但很快就迷路了(我不经常这样做)。
任何Unix:
我有以下 cmd 行,它工作正常。
rsync -avr -e ssh /home/dir [email protected]:/home/
但我现在需要将其设置为 rsync 到只有一个 FTP 服务器的远程服务器。我该怎么做?
我查看了 rsync 帮助,但很快就迷路了(我不经常这样做)。
由于其他人提到的原因, rsync对您不起作用。但是,lftp和ncftp都有可能满足您需要的“镜像”模式。
我使用它来将本地目录中的内容推送到 ftp 或 sftp 网络主机:
用画架写的,
lftp
是一个很好的工具。我建议你参数化脚本,并利用
选项,使用 shell 的 glob 功能 (*,? ..) 排除文件名:
警告:确保目标目录存在,否则cd命令会失败,所以包括删除文件树的操作 将在错误的目录(root)进行!
我已经更新了脚本,以便
--delete
默认禁用该选项,通过取消注释来启用它DELETE= command
。你没有。rsync 不能为您做到这一点,它是它自己的协议,不能通过 FTP 工作。
但是,您可能想尝试csync。IIRC 它通过 HTTP 提供类似 rsync 的行为。我无法评论它是否可以通过 FTP 工作,您必须尝试一下。
根据您实际尝试执行的操作,可以使用另一种完全不同的方法
curlftps
来安装 ftp 文件夹,然后可能rsync
是两个“本地”文件夹。安装因您的发行版而异,因此我无法一概而论,但您需要安装
fuse
和curlftpfs
(prolly Debian 默认已fuse
安装),然后:sudo apt-get install curlftpfs
确保
fuse
模块已加载 (modprobe fuse
)sudo curlftpfs ftp.yourserver.com /path/to/ftp/folder/ -o user=username:password,allow_other
请注意,最后一个逗号后没有空格(这不是错字!)。如果您对此感到满意或不想每次都这样做,您可以将其添加到您的 fstab 中(通常在 中
/etc/fstab
):在这种情况下,您必须确保之前加载了保险丝模块。
但请注意,有两件事:
curlftpfs
可能会失败(也许你可以用 做一些事情.netrc
)。有... _
rsync 不能通过 ftp 工作。在远程端,它需要 rsync 守护进程或可以从中调用 rsync 的 shell。Ftp 通常允许您调用一些命令,而 rsync 不是其中之一。还有其他用于自动执行 ftp 任务的工具,例如“lftp”。
对于你想要做的事情,你也可以使用 wget。
wget -m ftp://username:[email protected]
这似乎是一个很好的自由选择:https ://savannah.gnu.org/projects/ftpsync/
您可以使用 curlftpfs 挂载 ftp 并在 http://linux.die.net/man/1/curlftpfs之后使用 rsync
我正在使用 GVFS/FTP。我用 gigolo 挂载我的远程 FTP 服务器。由于它们被视为本地目录,因此几乎所有在本地文件上工作的东西都有效。rsync 旨在远程计算文件哈希以在不传输文件的情况下比较文件,但使用虚拟文件执行此操作无论如何都会传输文件。unison 和 freefilesync 通常运行良好,但是当他们想要重命名您上传的文件时遇到问题,下载没有问题。这可能是 gvfs 1.6.1 的问题。