【问题标题】:How to copy all files via FTP in rsync如何在 rsync 中通过 FTP 复制所有文件
【发布时间】:2011-08-24 14:56:52
【问题描述】:

我有一些主机的在线帐户,它给了我带有用户名和密码的 FTP 帐户。

我在 copany 有另一个,它给了我 FTP 和 rsync。

现在我想使用 rync 将所有文件从旧 FTP 传输到新 FTP。

现在是否可以通过 rsync 进行,只是因为我不想先在计算机上复制然后再次上传

【问题讨论】:

  • 你在一个或两个主机上都有shell吗?
  • 我在一台主机上只有 ftp,在另一台主机上只有 FTP、SFTP、rsync、SCP、SSH

标签: linux ftp rsync


【解决方案1】:

让我们只用 FTP src 调用机器。

让我们通过 FTP 和 SSH dst 调用机器。

ssh dst
cd destination-direction
wget --mirror --ftp-user=username --ftp-password=password\
     --no-host-directories ftp://src/pathname/

请注意,在命令行上运行 wget--ftp-password 会将密码泄露给系统上的其他任何人。 (以及通过电线以明文方式传输,但您知道这一点。)

如果您无权访问wget,那么他们可能安装了ncftplftpftp。我只是碰巧知道wget 最好的。 :)

编辑要使用ftp,您需要执行以下操作:

ftp src
user username
pass password
bin
cd /pathname
ls

此时,请注意远程系统上的所有目录。使用!mkdir 创建每一个。然后在本地和远程切换到目录:

lcd <dirname>
cd <dirname>
ls

对所有目录重复。使用mget *获取所有文件。

如果这看起来很糟糕,那是因为它确实如此。 FTP 不是为此而设计的,如果您的新主机没有更好的工具(一定要寻找ncftplftp 或者类似ftpmirror),那么要么自己编译更好的工具,要么变得更好围绕坏工具编写脚本。 :)

或者,如果您可以在 src 上获得一个 shell,那也会有很大帮助。 FTP 只是不适合传输数千个文件。

无论如何,这可以避免在您的本地系统中反弹,这应该会显着提高吞吐量。

【讨论】:

  • 我没有 wget 但有 ftp,如何用 ftp 更改你的命令
  • 我在互联网上有另一个 linux 主机,我想我需要先 wget 那里的所有文件,然后从那里使用 rsync 到目的地
  • 哦,是的,听起来好多了。 :) 你也可以tar 中间系统上的文件,假设你有驱动器空间,并且只需在中间人主机之间传输一个 single 文件。这将大大击败rsync。 :)
  • 在你上面的 Wget 命令中,在哪里输入 ftp 主机名
  • wget from nfs share 也下载文件。谢谢:-)
【解决方案2】:

总是有值得信赖的 FUSE 文件系统,CurlFtpFSSSHFS。使用适当的文件系统安装每个服务器,并使用标准实用程序进行复制。可能不是最快的方法,但很可能是劳动强度最低的方法。

【讨论】:

    【解决方案3】:

    我一直在寻找一种简单的解决方案,通过 FTP 将远程文件夹同步到本地文件夹,同时只替换新文件。我遇到了一个基于sarnoldanswer 的小wget 脚本,我认为它也可能对其他人有帮助,所以这里是:

    #!/bin/bash    
    HOST="1.2.3.4"
    USER="username"
    PASS="password"
    LDIR="/path/to/local/dir"    # can be empty
    RDIR="/path/to/remote/dir"   # can be empty
    
    cd $LDIR && \                # only start if the cd was successful
    wget \
      --continue \               # resume on files that have already been partially transmitted
      --mirror \                 # --recursive --level=inf --timestamping --no-remove-listing
      --no-host-directories \    # don't create 'ftp://src/' folder structure for synced files
      --ftp-user=$USER \
      --ftp-password=$PASS \
        ftp://$HOST/$RDIR
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-31
      • 2014-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多