我需要将多个文件传输到 HPC 集群。目前,我一直在使用 scp 命令,但传输一个文件(每个文件约 1.4GB)大约需要 10 分钟或更长时间。我已经看到使用 tar 会加快传输速度,但是我注意到压缩文件比仅使用 scp 传输文件花费的时间要长得多。我使用的 tar 命令是:
tar -cvfz files.tar.gz files
我也尝试过使用 rsync,但是我不断收到错误消息,提示尽管 rsync 安装在远程服务器上,但 bash 无法识别 rsync。我对这些东西不太了解,所以任何帮助或建议将不胜感激!
答案1
具体来说,使用 tar,您可以简单地将输出通过管道传输到 ssh,而不是将其存储在本地磁盘上,这应该会更快一些,因为它直接通过 ssh 进行流式传输,而无需等待构建整个 tar 存档:
tar zcvf - files | ssh user@hostname "tar xvzf - -C /home/user"
如果它仍然很慢,那么您可能根本不压缩会做得更好:
tar cvf - files | ssh user@hostname "tar xvf - -C /home/user"
但这仅对一次性移动文件有用。
当专门使用 scp 时,它有一个标志-C
,scp 只是将其传递给 ssh,以启用压缩。
如果您决定使用 rsync,它支持部分文件传输并跳过重新上传未更改的文件(这应该使多次上传过程中的速度更快),您应该--compress, -z
在其手册页中进行搜索。