任何Unix系统:
我有以下运行良好的 cmd 行。
rsync -avr -e ssh /home/dir [email protected]:/home/
但我现在需要将其设置为 rsync 到仅有 FTP 服务器的远程服务器。我该怎么做?
我查看了 rsync 帮助,但很快就迷失了(我并不经常做这些事情)。
答案1
你不需要。rsync 无法为你做到这一点,它是一种独立的协议并且不能通过 FTP 工作。
不过,你也许想尝试一下同步。如果我没记错的话,它通过 HTTP 提供了类似 rsync 的行为。我无法评论它是否可以通过 FTP 工作,你必须尝试一下。
答案2
同步对你来说,因为其他人提到的原因,它不会起作用。然而,lftp和FTP服务器两者都具有“镜像”模式,可能会满足您的需求。
我使用它将内容从我的本地目录推送到 ftp 或 sftp 网络主机:
lftp -c "set ftp:list-options -a;
open ftp://user:[email protected];
lcd ./web;
cd /web/public_html;
mirror --reverse --delete --use-cache --verbose --allow-chown
--allow-suid --no-umask --parallel=2 --exclude-glob .svn"
答案3
撰文画架,lftp
是一个很好的工具。
我建议您参数化脚本,并使用
exclude-glob
选项,使用 shell 的 glob 功能(*,? ..)排除文件名:
#!/bin/bash
HOST="your.ftp.host.dom"
USER="username"
PASS="password"
FTPURL="ftp://$USER:$PASS@$HOST"
LCD="/path/of/your/local/dir"
RCD="/path/of/your/remote/dir"
#DELETE="--delete"
lftp -c "set ftp:list-options -a;
open '$FTPURL';
lcd $LCD;
cd $RCD;
mirror --reverse \
$DELETE \
--verbose \
--exclude-glob a-dir-to-exclude/ \
--exclude-glob a-file-to-exclude \
--exclude-glob a-file-group-to-exclude* \
--exclude-glob other-files-to-exclude"
警告:确保目标目录存在,否则cd命令会失败,因此操作包括删除文件树 将会发生在错误的目录(根目录)!
我已经更新了脚本,因此该--delete
选项默认是禁用的,通过取消注释来启用它DELETE= command
。
答案4
有威克斯...
Weex 是一款旨在自动执行远程维护网页或其他 FTP 存档任务的实用程序。它会根据需要执行上传和远程删除,将一组本地文件同步到远程服务器。