AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 24622
Accepted
bumperbox
bumperbox
Asked: 2009-06-13 01:51:36 +0800 CST2009-06-13 01:51:36 +0800 CST 2009-06-13 01:51:36 +0800 CST

如何通过 FTP 使用 rsync

  • 772

任何Unix:

我有以下 cmd 行,它工作正常。

rsync -avr -e ssh /home/dir user@example.com:/home/

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

我查看了 rsync 帮助,但很快就迷路了(我不经常这样做)。

ftp rsync
  • 18 18 个回答
  • 361104 Views

18 个回答

  • Voted
  1. easel
    2009-06-13T06:58:34+08:002009-06-13T06:58:34+08:00

    由于其他人提到的原因, rsync对您不起作用。但是,lftp和ncftp都有可能满足您需要的“镜像”模式。

    我使用它来将本地目录中的内容推送到 ftp 或 sftp 网络主机:

    lftp -c "set ftp:list-options -a;
    open ftp://user:password@your.ftp.com; 
    lcd ./web;
    cd /web/public_html;
    mirror --reverse --delete --use-cache --verbose --allow-chown  
    --allow-suid --no-umask --parallel=2 --exclude-glob .svn"
    
    • 181
  2. GabrieleV
    2010-01-27T03:58:05+08:002010-01-27T03:58:05+08:00

    用画架写的,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命令会失败,所以包括删除文件树的操作 将在错误的目录(root)进行!

    我已经更新了脚本,以便--delete默认禁用该选项,通过取消注释来启用它DELETE= command。

    • 131
  3. Best Answer
    Martin M.
    2009-06-13T02:00:21+08:002009-06-13T02:00:21+08:00

    你没有。rsync 不能为您做到这一点,它是它自己的协议,不能通过 FTP 工作。

    但是,您可能想尝试csync。IIRC 它通过 HTTP 提供类似 rsync 的行为。我无法评论它是否可以通过 FTP 工作,您必须尝试一下。

    • 87
  4. Pablo Olmos de Aguilera C.
    2010-12-12T04:39:36+08:002010-12-12T04:39:36+08:00

    根据您实际尝试执行的操作,可以使用另一种完全不同的方法curlftps来安装 ftp 文件夹,然后可能rsync是两个“本地”文件夹。

    安装因您的发行版而异,因此我无法一概而论,但您需要安装fuse和curlftpfs(prolly Debian 默认已fuse安装),然后:

    1. sudo apt-get install curlftpfs

    2. 确保fuse模块已加载 ( modprobe fuse)

    3. sudo curlftpfs ftp.yourserver.com /path/to/ftp/folder/ -o user=username:password,allow_other

    请注意,最后一个逗号后没有空格(这不是错字!)。如果您对此感到满意或不想每次都这样做,您可以将其添加到您的 fstab 中(通常在 中/etc/fstab):

    curlftpfs#user:password@ftp.yourserver.com /path/to/ftp/folder/ fuse auto,user,uid=1000,allow_other 0 0
    

    在这种情况下,您必须确保之前加载了保险丝模块。

    但请注意,有两件事:

    • 开发者在一两年前放弃了这个项目,所以我暂时不知道它的可用性/稳定性如何。
    • 如果密码包含一个奇怪的字符curlftpfs可能会失败(也许你可以用 做一些事情.netrc)。
    • 28
  5. Johan
    2009-08-18T06:38:38+08:002009-08-18T06:38:38+08:00

    有... _

    Weex 是一个实用程序,旨在自动执行远程维护网页或其他 FTP 存档的任务。它将通过根据需要执行上传和远程删除将一组本地文件同步到远程服务器。

    • 17
  6. Ian Kelling
    2009-06-13T02:03:30+08:002009-06-13T02:03:30+08:00

    rsync 不能通过 ftp 工作。在远程端,它需要 rsync 守护进程或可以从中调用 rsync 的 shell。Ftp 通常允许您调用一些命令,而 rsync 不是其中之一。还有其他用于自动执行 ftp 任务的工具,例如“lftp”。

    • 12
  7. Aaron
    2010-02-26T10:12:05+08:002010-02-26T10:12:05+08:00

    对于你想要做的事情,你也可以使用 wget。

    wget -m ftp://username:password@domain.com

    • 12
  8. pauska
    2009-06-13T07:02:10+08:002009-06-13T07:02:10+08:00

    这似乎是一个很好的自由选择:https ://savannah.gnu.org/projects/ftpsync/

    • 8
  9. shaftmx
    2012-12-10T13:47:18+08:002012-12-10T13:47:18+08:00

    您可以使用 curlftpfs 挂载 ftp 并在 http://linux.die.net/man/1/curlftpfs之后使用 rsync

    • 5
  10. Papou
    2012-11-30T09:55:07+08:002012-11-30T09:55:07+08:00

    我正在使用 GVFS/FTP。我用 gigolo 挂载我的远程 FTP 服务器。由于它们被视为本地目录,因此几乎所有在本地文件上工作的东西都有效。rsync 旨在远程计算文件哈希以在不传输文件的情况下比较文件,但使用虚拟文件执行此操作无论如何都会传输文件。unison 和 freefilesync 通常运行良好,但是当他们想要重命名您上传的文件时遇到问题,下载没有问题。这可能是 gvfs 1.6.1 的问题。

    • 5

相关问题

  • 从服务器复制到服务器

  • 无法删除或编辑 ProFTPD 服务器上的文件

  • 如何在 Windows 中将 FTP 挂载到驱动器号?

  • 为什么我无法从我的win2008 NAT 后面连接到某些ftp 服务器?

  • 用于 Windows Server 的 FTP 服务?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve