在某些情况下,我在将多个 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 内核将自动释放部分缓存并将其用于该进程。这是正常且预期的行为。