这看起来与这个有关,但又有些不同。
两个公司站点之间有这个 WAN 链接,我们需要传输一个非常大的文件(Oracle 转储,~160 GB)。
我们有完整的 100 Mbps 带宽(已测试),但由于 TCP 的工作方式(ACK 等),单个 TCP 连接似乎无法将其最大化。我们使用iperf测试了链接,当增加 TCP 窗口大小时,结果发生了显着变化:使用基本设置,我们可以获得 ~5 Mbps 的吞吐量,使用更大的 WS,我们可以获得 ~45 Mbps,但仅此而已。网络延迟约为 10 毫秒。
出于好奇,我们使用多个连接运行 iperf,我们发现,当运行四个连接时,它们确实每个都能达到约 25 Mbps 的速度,填满所有可用带宽;所以关键似乎在于运行多个同时传输。
使用 FTP,情况变得更糟:即使使用优化的 TCP 设置(高窗口大小、最大 MTU 等),我们在单次传输中也无法获得超过 20 Mbps 的速度。我们尝试同时 FTP 传输一些大文件,确实比传输单个文件要好得多;但后来罪魁祸首变成了磁盘 I/O,因为从同一个磁盘读取和写入四个大文件很快就会遇到瓶颈;此外,我们似乎无法将单个大文件拆分为较小的文件然后将其合并回来,至少不能在可接受的时间内(显然我们不能将拼接/合并回文件的时间与转让)。
这里理想的解决方案是一个多线程工具,可以同时传输文件的各个块;有点像 eMule 或 BitTorrent 等点对点程序已经这样做了,但是从单一来源到单一目的地。理想情况下,该工具将允许我们选择要使用的并行连接数,当然还可以优化磁盘 I/O,以免(太)在文件的各个部分之间疯狂跳转。
有谁知道这样的工具?
或者,有人可以提出更好的解决方案和/或我们已经没有尝试过的方法吗?
PS 我们已经考虑将其备份到磁带/磁盘并将其物理发送到目的地;如果 WAN 不切断它,那将是我们的极端措施,但是,正如 AS Tanenbaum 所说,“永远不要低估一辆装满磁带的旅行车在高速公路上疾驰的带宽。”
当文件通过 SSH 传输正常时,为什么要考虑在服务器上设置 FTP 服务(在 Lunux 上使用 Midnight Commander,在 Windows 客户端上使用 FileZilla)?两者的优缺点是什么?除此之外,不同的客户端更广泛地支持 tat FTP。
我目前正在使用rsync一个脚本,该脚本将 PHP 应用程序从登台部署到生产服务器。方法如下:
rsync -rzai --progress --stats --ignore-times --checksum /tmp/app_export/ root@app.com:/var/www/html/app/
Run Code Online (Sandbox Code Playgroud)
这当前正在输出正在比较的每个文件的列表(项目中的每个文件),但我希望它只输出修改过的文件,所以我可以运行它并--dry-run选择检查每个部署是否只更新所需的文件。
注意:到目前为止我能做的最好的是grep fcst结果,但我正在寻找一个rsync选项,我确定它在那里,但我在手册页中找不到它。
提前致谢!
我需要将文件从一台 CentOS 服务器传输到另一台。大约每 10 分钟将传输 5MB 文件。不需要加密。
什么是快速传输文件的简单方法?
有什么比 ftp 更简单的吗?
谢谢!
我正在服务器之间传输文件,刚刚开始注意到其中一些文件被修改为一条长的连续行,而不是原来的返回和换行符。我假设这与我最初设置为“自动”的 FTP 客户端的传输类型有关,但将“二进制”和“ASCII”作为附加选项。
简而言之,我将文件从一台服务器传输到另一台服务器的方式之间有什么区别,这些差异是否能够以我上面提到的方式修改文件?
从Windows转移到Linux。
rsync 是我项目的好选择吗?
我必须:
- 通过 SSH 将文件从源文件夹复制到目标文件夹,
- 确保所有文件都已复制,
-复制后删除源文件。
- 如果我有冲突名称,我必须重命名文件。
看起来我可以使用选项:--remove-source-files(删除源文件)
但是rsync如何管理冲突,我可以有规则吗?
我的项目中的用例:
我在服务器 A 上运行科学计算并将结果插入文件夹“process”中,对于每个计算,我都有一个这样的存储库:/process/calc1。
现在我想将存储库“/calc1”传输到服务器 B(我得到 /process/calc1),并从服务器 A 中删除“calc1”
。...在另一次计算中,我在服务器 A 上得到“/process/calc2”,这个想法也是将“calc2”移动到服务器 B 上的“/process/”目录中,然后我现在在服务器 B 上:
- /process/calc1
- /process/calc2
(并且服务器 A 上的 /process/ 是空的)。
如果在新计算后在服务器 A 中有另一个像“/process/calc1”这样的文件夹(如果服务器 B 上已经存在“/process/calc1”),rsync 将如何管理冲突(在服务器 B 上)?
是否可以使用 rsync 添加规则,并在服务器 B 中通过“process/calc1R2”重命名“/process/calc1”?依此类推(例如:calc1R3)?
谢谢。
我需要将一个 20 GB 的KVM虚拟磁盘文件(存储 CentOS 6.5 VM 的根文件系统)从一台实验室服务器传输到另一台。大文件大小以及我曾经将这样的虚拟磁盘文件压缩到几百兆字节的事实使我本能地启用了压缩,scp但我惊讶地发现传输速度相当低。然后我试图bzip2结合ssh和cat与大吃一惊。以下是方法和平均吞吐量的摘要。
scp -C vm1-root.img root@192.168.161.62:/mnt/vdisks/, 11 MB/秒。 bzip2 -c vm1-root.img | ssh -l root 192.168.161.62 "bzip2 -d -c > /mnt/vdisks/vm1-root.img", 5 MB/秒。这个更低的结果促使在网上搜索。scp -c arcfour -C vm1-root.img root@192.168.161.62:/mnt/vdisks/, 13 MB/秒。-c arcfour在有关 serverfault 的一个答案中建议使用as 。它几乎没有帮助。最后,我禁用了压缩。scp vm1-root.img root@192.168.161.62:/mnt/vdisks/, 23 MB/秒。 压缩不应该更快吗?
编辑:我不知道为什么这个问题被否决了。我想在这里可以学到一些东西。
ssh(1)从@sven收到手册页提示后,我尝试了几种不涉及压缩的文件传输替代方法,两者都取得了更好的结果。
cat vm1-root.img | ssh -l root 192.168.161.62 "cat > /mnt/vdisks/vm1-root.img", 26 …
我有一台运行 MS SQL Server 的 Window Server 2000 机器,可存储超过 20GB 的数据。数据库每天备份到第二个硬盘。我想将这些备份文件转移到另一台计算机上,以构建另一台测试服务器并进行恢复练习。(备份实际上几乎 5 年都没有恢复。不要告诉我的老板!)
我无法通过网络传输那个巨大的文件。我尝试过普通网络复制、apache 下载和 ftp。当传输的数据量达到 2GB 时,我尝试过的任何方法都以失败告终。我最后一次成功传输文件是通过 USB 连接的外部硬盘驱动器。但我想定期执行此任务,最好是自动执行。
想知道在这种情况下最务实的方法是什么?
我目前在 Linux 主机上使用 rsync 将内容从 Windows 复制到我的 Linux 机器上。但我无法复制长名称的文件。
我尝试过DeltaCopy、cwrsync和cygwin。据我发现,当文件长度变长时,所有这些工具都拒绝复制文件,这似乎在 255 个字符左右。
这个问题在cwrsync论坛讨论在这里和它理应可以在将来某个时候,每当Cygwin的1.7出来和支持UTF8固定。甚至有一个测试版本在这里。
我不太习惯在生产系统上使用测试版本。我希望有人知道另一个 rsync 选项。
作为 rsync 的替代方案,您知道我可以从 Windows 主机复制 Linux 上的目录结构的另一种工具吗?重要的一点是我需要一个可以轻松跨 SSH 隧道工作的工具。一些系统超越了防火墙,我相信 SSH 是我被允许使用的隧道。
我在远程位置有一个旧的 Windows 2000 盒子,有一个 T1 连接和一个到我位置的 vpn。我通常使用 smb 挂载来传输文件,但现在是时候停用服务器并将其备份复制到我的位置了。我有大约 40 GB(压缩)要复制。我准备好花很长时间,但我有一些警告。
有几个小文件和几个大文件(10-20 GB)。我熟悉 *nix 平台上的 rsync,但在 Windows 上运气不佳,我不知道它是否真的会保留部分传输的文件。你用什么?
file-transfer ×10
rsync ×3
backup ×2
ftp ×2
linux ×2
scp ×2
ssh ×2
ascii ×1
bandwidth ×1
binary ×1
deployment ×1
file-sharing ×1
files ×1
networking ×1
shell ×1
sql-server ×1
tcp ×1
unix ×1
windows ×1