我在远程 Web 服务器上有大约 600MB,我想将其复制到 PC,然后复制到新服务器。我尝试了 FileZilla,但它在从旧服务器传输的过程中失败了,并且无法在不丢失已完成内容的情况下恢复。有没有更好的办法?
感谢您的回复。为了澄清,这里是问题的更多细节和我的最终结果。
两台远程服务器都是 *nix 系统,具有 SSH 和 shell 访问权限。我没有考虑在没有中间 PC 的情况下直接移动文件;我决定将其保留为流程的一部分,主要是为文件提供备份。中间的 PC 是 Windows,但我有大多数 Linux 实用程序作为 Cygwin 的一部分。
我决定复制到 Windows 有一个意想不到的好处 - 它告诉我文件结构的一些微妙细节,否则这些细节可能会被忽视。我使用以下内容生成了服务器和 Windows PC 上所有文件的校验和:
find . -type f -exec cksum {} \; | sort >sums.txt
我在 Windows 副本中发现了一些不匹配的地方。首先是两个名称相同的文件,但大小写不同,这导致第二个文件覆盖第一个文件。其次是软链接,它被转换为常规文件。
我认为我最初使用 Filezilla 的问题是由大写/小写重复引起的,这导致该文件中止。当我重新检查传输状态时,服务器连接已丢失,这解释了我无法恢复的原因。
通过 SSH 进行 Rsync。
如果文件通过 http 或 ftp 公开,请使用 wget。它就像一只比特犬。如果您指定无限重试,则保留并且不会放弃。一次以大约 6 字节/秒的速度下载了一个几 MB 的文件 :)
如果你有 shell 访问权限,你也可以使用 rsync。
了解服务器是什么操作系统会有所帮助。我认为 FTP 将是您最好的选择。虽然,如果您有权访问,我会登录到您要复制到的服务器并尝试从源服务器直接复制并摆脱中间的 PC。
如其他答案中所建议的,Linux 或其他 *nix Rsync over SSH。它是安全的,如果有任何中断,它将从中断的地方恢复,可以在传输时压缩文件。
Windows
Robocopy 可能是您最好的选择。
继续使用 Filezilla。
SSH 的 Rsync 也不是更好:Filezilla 能够连接到 SSH 端口 22,从而在同一台机器上使用端口 20+21 连接到 FTP 服务。Filezilla 已经有能力通过其排队和 SSL 功能来做到这一点。
Filezilla 具有非常成熟的“恢复”功能,在正确配置时应该可以处理任何连接丢失问题。
如果您想避免 FTPS 或 FTP 不可靠的双端口/通道特性(这可能是您的问题),您可以在目标机器上的端口 22 上运行 CoreFTP 服务器的“迷你”版本,并使用 WinSCP 或 CoreFTP 客户端连接到它并通过单个端口进行传输。
FTP 可能是最好的方式(即你在做什么)
您现在最好的选择是压缩文件(即以某种方式将其压缩)并使用http://www.filesplitter.org/之类的东西将文件分成更小的块(例如)
您可以使用WinRar之类的工具完成这两项任务,然后下载它们。
但当然,这取决于您对主机的访问方式以及主机是什么。甚至是窗户吗?
我使用 FileZilla,因为您可以将其设置为不下载/上传相同年龄或更早的文件。因此,除非文件较新,否则您不会查看文件。如果我想将文件直接从一台服务器复制到另一台服务器,我使用 Rapid Transfer Script (www.rapidtransferscript.com)。它可以在 90 秒内复制 1GB 的大文件。