加速SCP上传速度

假设如今须要频繁上传一些文件,务必配合scp命令写一个脚本,效率很高
影响一次上传速度的因素不少,包含如下
  • 压缩因素
    • 是否应该启用压缩 (见测试 1)
    • 是否启用多级压缩 (见测试 2)
  • 修改ssh加密算法 (见测试 3)
  • 完整性校验 (见测试 4)

测试 - 1 是否应该启用压缩

# 使用/不使用压缩命令

sshpass -p "${PASSWORD}" scp <-C> ${UPLOAD_FILE} root@${IP}:${WORKDIR}复制代码

压缩自己消耗时间,想一想若是压缩过程自己就花掉不少时间,可是文件自己大小却没有明显改变,很不划算,针对压缩率很大的文件启用压缩上传划的来。算法

测试数据见下图,结论以下:安全

  1. 首先咱们使用tar.gz压缩, 发现二进制文件相比于代码包的压缩空间很大
  2. 上传时间印证了上一条想法, 压缩二进制文件能节省更多上传时间,高达59%,可是不管那一种压缩方式,都能节省你不少时间



测试-3 修改加密算法

# 指定/不指定压缩命令
sshpass -p "${PASSWORD}" scp <-c aes-xxx> <-C> ${UPLOAD_FILE} root@${IP}:${WORKDIR}复制代码

加密算法用于保护你的数据,理论上固然是越弱速度越快,可是对你数据的保护相对应也就越少,默认状况下scp使用aes-128算法,接下来我会选择经常使用加密算法,分别在有/无压缩下对比bash

  1. 压缩与否能很大程度的节省你时间
  2. 不一样加密算法也能产生很大的差异,如印象里很是安全的chacha-20就是以复杂的算力成本为代价的,经常使用简单的aes-128-gcm在途中就是最省事最省时间的


测试-4 完整性校验算法选择

# 选择不一样的校验证方法
sshpass -p "${REMOTE_PASS}" scp -C -c aes128-gcm <-o MACs some-methods> ${ARTIFACT} root@${REMOTE_IP}:${REMOTE_WORKDIR}复制代码

关于完整性校验证,默认状况下scp使用的是hmac-md5算法。根据前两个测试此次我默认
  启用压缩 + aes-128gcm加密算法 + 上传一个二进制文件,来测试不一样校验方法之间的差别ssh

  • 在aes-128gcm下不一样的校验算法带来的差异不会特别大,默认的hmac-md5算是配合的比较好的,能够继续使用此默认选项

相关文章
相关标签/搜索