目录
在工作中,经常会遇到需要将服务器上大量数据快速传输到本地的场景。尤其是在gpu服务器上训练大规模数据的时候,往往需要数据迁移,有的则需要先迁移到本地。本文将介绍三种常用方法,并总结各自的优缺点和适用场景,帮助你根据实际需求选择合适的传输方案。
1. 直接使用 SCP 传输
方法简介
SCP(Secure Copy Protocol)是基于 SSH 协议的数据传输工具,其主要优点是使用简单、无需额外安装软件。对于数据量较小或网络环境稳定的情况,SCP 是一个直接高效的选择。
命令示例
将服务器上 /home/data/ 目录下所有 .npz 文件传输到本地桌面 data 目录:
scp 用户名@<服务器IP>:/home/data/*.npz ~/Desktop/data/
优缺点
- 优点:
- 简单易用,适用于单次、快速的数据传输。
- 基于 SSH 提供安全认证。
- 缺点:
- 对网络中断的容忍度较低,数据量大时可能需要重新传输。
- 无法断点续传。
2. 压缩后传输
方法简介
对于大量文件传输而言,将多个文件打包成一个归档文件再传输能大大减少传输次数,同时压缩过程还能减小数据体积,加速传输。此方法适用于文件数量多、数据量大及对传输安全性要求较高的情况。
实现步骤
步骤 1:在服务器上压缩文件
在服务器上通过 SSH 执行以下命令,将文件打包并压缩为一个归档文件。注意,使用 tar czf 参数:
ssh 用户名@<服务器IP> 'tar czf /home/data/data_npz.tar.gz -C /home/data xxx.npz
解析:
tar czf表示创建一个压缩的 tar 包,c代表创建,z表示 gzip 压缩,f指定文件名。-C /home/xqgrp/data指定目录,使得归档包内仅包含文件名,而非完整路径。- 列举需要压缩的文件列表。
步骤 2:传输压缩文件
使用 SCP 将生成的压缩包传输到本地:
scp 用户名@<服务器IP>:/home/data/data_npz.tar.gz ~/Desktop/data/
步骤 3:本地解压
在本地解压缩后,即可获得原始文件:
tar xzf ~/Desktop/data/data_npz.tar.gz -C ~/Desktop/data/
替代方案:管道传输压缩数据
为了避免在服务器上生成临时文件,可以直接使用 SSH 管道在本地生成压缩包:
ssh 用户名@<服务器IP> 'tar czf - -C /home/data xxx.npz
这种方法直接将压缩后的数据输出到本地文件,再进行解压。
优缺点
- 优点:
- 数据量大的情况下,压缩可以显著降低传输的数据量。
- 只需要单次传输整个压缩包,简化传输过程。
- 缺点:
- 压缩和解压过程会消耗一定的服务器和本地资源。
- 如果数据不容易压缩(例如已经压缩格式的文件),优势不明显。
3. 使用 Rsync 同步数据
方法简介
Rsync 是另一个非常常用的文件传输和同步工具。其特点在于支持断点续传、增量传输和数据压缩,使得 rsync 在大规模数据传输和不稳定网络环境下具有显著优势。
命令示例
将服务器上的所有 .npz 文件通过 rsync 同步到本地:
rsync -avzP 用户名@<服务器IP>:/home/data/*.npz ~/Desktop/data/
参数解析
-a:归档模式,能够保留文件权限、时间戳等属性。-v:显示传输过程的详细信息。-z:在传输过程中启用压缩,提高数据传输效率。-P:显示传输进度,同时支持断点续传功能。
优缺点
- 优点:
- 支持断点续传和增量传输,适合大数据量不稳定网络环境。
- 自带压缩选项,进一步提升传输效率。
- 缺点:
- 命令较复杂,初学者可能需要学习基本用法。
- 对于零散文件传输效率不一定比简单的 SCP 高。
小结
传输大量数据时,不同方法各有优势:
- 直接使用 SCP:适用于较小数据量,操作简单,但对网络中断不够容错。
- 压缩后传输:适用于文件数量多、数据量大的场景,通过压缩减少传输数据量,同时可以采用管道方式实现无临时文件传输。
- 使用 Rsync:适用于大规模数据同步,支持断点续传和增量传输,适合频繁更新的数据传输需求。
在选择方法时,应根据实际数据量、网络条件和操作习惯进行合理选择。如果需要一次性传输大量数据,建议先压缩文件再传输;若数据更新频繁或网络状况不佳,则使用 rsync 更为保险。
希望这篇文章能帮助你在实际工作中更高效、更安全地从服务器传输数据到本地!
598

被折叠的 条评论
为什么被折叠?



