我有一些主机的在线帐户,它为我提供了用户名和密码的FTP帐户。
我有另一个与copany给了我FTP和rsync。
现在我想通过rync将我的所有文件从旧FTP传输到新FTP。
现在可以通过rsync来实现,因为我不想先在计算机上复制然后再上传
答案 0 :(得分:14)
让我们只使用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
,则可能已安装ncftp
或lftp
或ftp
。我碰巧知道wget
最好的。 :)
修改要使用ftp
,您需要执行以下操作:
ftp src
user username
pass password
bin
cd /pathname
ls
此时,请记下远程系统上的所有目录。使用!mkdir
创建每个。然后在本地和远程更改目录:
lcd <dirname>
cd <dirname>
ls
重复所有目录。使用mget *
获取所有文件。
如果这看起来很糟糕,那是因为它。 FTP不是为此设计的,如果您的新主机没有更好的工具(请务必查找ncftp
和lftp
,可能还有ftpmirror
),那么要么编译自己更好的工具或者善于围绕坏工具编写脚本。 :)
或者,如果你可以在src
上获得一个shell,那也非常有帮助。 FTP不仅仅用于传输数千个文件。
无论如何,这可以避免在本地系统中弹跳,这应该有助于显着提高吞吐量。
答案 1 :(得分:4)
答案 2 :(得分:1)
我一直在寻找一种简单的解决方案,通过FTP将远程文件夹同步到本地文件夹,同时只替换新文件。我遇到了一些基于sarnold answer的 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