如何通过 FTP 使用 rsync

如何通过 FTP 使用 rsync

任何Unix系统:

我有以下运行良好的 cmd 行。

rsync -avr -e ssh /home/dir [email protected]:/home/

但我现在需要将其设置为 rsync 到仅有 FTP 服务器的远程服务器。我该怎么做?

我查看了 rsync 帮助,但很快就迷失了(我并不经常做这些事情)。

答案1

你不需要。rsync 无法为你做到这一点,它是一种独立的协议并且不能通过 FTP 工作。

不过,你也许想尝试一下同步。如果我没记错的话,它通过 HTTP 提供了类似 rsync 的行为。我无法评论它是否可以通过 FTP 工作,你必须尝试一下。

答案2

同步对你来说,因为其他人提到的原因,它不会起作用。然而,lftpFTP服务器两者都具有“镜像”模式,可能会满足您的需求。

我使用它将内容从我的本地目录推送到 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 存档任务的实用程序。它会根据需要执行上传和远程删除,将一组本地文件同步到远程服务器。

相关内容