scp 占用大量内存

scp 占用大量内存

在某些情况下,我在将多个 GB 文件传输到具有 32GB 内存的 SGI Altix350 上的 SUSE® LINUX Enterprise Server 9(内核 2.6.xx)系统时遇到了 scp 问题。

我使用 scp -r -p 将目录复制到同一台服务器上的另一个目录,但由于某种原因,它开始使用大量内存,并且 top 命令中的缓存增长非常快。Samba 正在系统上运行。

如果您对 scp 或其他复制包含大量目录和文件的目录的方法有任何意见,我很乐意听听。

谢谢你的帮助,KhalilHL

答案1

我个人更喜欢使用,rsync因为它可以让我从中断的传输中顺利恢复。

要在本地使用:

$ rsync -avP /path/to/source /path/to/destination

要将本地传输到远程:

$ rsync -avP /path/to/source user@remote:/path/to/destination

要将远程传输到本地:

$ rsync -avP user@remote:/path/to/source /path/to/destination

我使用的开关是:

  • -a = Archive - 创建尽可能接近的树的精确副本
  • -v = 详细 - 确实不言而喻
  • -P = 显示传输进度并允许从部分文件恢复。

答案2

同一个服务器??

SCP 有大量的加密开销,这就是内存问题的来源。它还通过 SSH 进行隧道传输,这意味着,如果您在同一台机器上的目录之间 SCP 传输内容,它会创建一个 SSH 隧道来本身,然后加密流量并解密。

你为什么不直接用CP呢?

答案3

我认为您误解了“top”的输出。

top 命令的缓存增长非常快

术语“缓存”表示“硬盘缓存”。您正在处理多 GB 文件,因此 Linux 将使用(几乎)每一点可用 RAM 来帮助 HDD。一旦进程需要更多内存,Linux 内核将自动释放部分缓存并将其用于该进程。这是正常且预期的行为。

相关内容