• Lftp+Sftp传输总结


    背景介绍:
    因为备份数据的不断扩大,需要把现网备份的数据(2T左右)传回到本地进行异地保存。但是2T太大了,需要进行压缩,这里采用了3G一个压缩包的方式。以下是压缩脚本

    1.  
      #!/bin/bash
    2.  
      # 此脚本是全量压缩mongodb备份的文件
    3.  
      printf "开始mongodb备份压缩 $(date +%Y%m%d_%A_%Z%T)\n"
    4.  
      cd /data_master/backup/
    5.  
      tar czf - picdb | split -b 3072m - picdb.tar.gz
    6.  
      if [ $? != 0 ]
    7.  
      then
    8.  
      printf "mongodb备份压缩失败 $(date +%Y%m%d_%A_%Z%T)\n"
    9.  
      else
    10.  
      printf "mongodb备份压缩完成 $(date +%Y%m%d_%A_%Z%T)\n"
    11.  
      fi
    12.  
       
    13.  
      echo "剩余容量: `df -h |awk -F '[ ]+' 'NR==7{print $4}'`"

    Lftp+Sftp传输总结
    压缩完的结果就是上图一样,只是个数较多。
    接下来的问题是:现网网络带宽有限,如何把这些压缩包传回到本地。这里采用的 早上6点至晚上10点,进行限速传(限速500KB/s),晚上10点后至早上6点采取不限速。

    1.  
      #!/bin/bash
    2.  
      # SFTP传输脚本
    3.  
      # IP地址
    4.  
      IP=本地IP
    5.  
      # PORT端口
    6.  
      PORT=本地端口号
    7.  
      # USER用户名
    8.  
      USER=本地用户
    9.  
      # PASSWD密码
    10.  
      PASSWD=用户密码
    11.  
      #压缩包所在目录
    12.  
      CLIENTDIR=/data_master/backup/
    13.  
      #SFTP服务器待下载目录
    14.  
      SEVERDIR=/sftp/data_master/
    15.  
      # 设置当前小时
    16.  
      # xiaoshi=`date +"%Y-%m-%d %H:%M.%S"|awk -F "[ :]+" '{print $2}'`
    17.  
      #待下载文件名
    18.  
      # FILE=
    19.  
      while :
    20.  
      do
    21.  
      xiaoshi=`date +"%Y-%m-%d %H:%M.%S"|awk -F "[ :]+" '{print $2}'`
    22.  
      if [ ${xiaoshi} -ge 6 ] && [ ${xiaoshi} -lt 22 ];
    23.  
      then
    24.  
      echo "大于6时并小于22时,应该执行限速"
    25.  
      File=`head -1 /home/lsy/Sftp.txt`
    26.  
       
    27.  
      printf "开始传输压缩备份 $(date +%Y%m%d_%A_%Z%T)\n" >>/home/lsy/sftp_file.log
    28.  
      cd ${CLIENTDIR}
    29.  
      lftp -u 用户,密码 sftp://本地IP地址:端口号 << EOF
    30.  
      cd ${SEVERDIR}
    31.  
      lcd ${CLIENTDIR}
    32.  
      set net:limit-rate 500000:500000
    33.  
      reput ${File}
    34.  
      by
    35.  
      EOF
    36.  
      if [ $? -eq 0 ]
    37.  
      then
    38.  
      echo "传输成功。下面是文件名" >>/home/lsy/sftp_file.log
    39.  
      echo ${File} >>/home/lsy/sftp_file.log
    40.  
      sleep 3
    41.  
      else
    42.  
      echo "传输失败。" >>/home/lsy/sftp_file.log
    43.  
      sleep 5
    44.  
      exit 2
    45.  
      fi
    46.  
      sed -i 1d /home/lsy/Sftp.txt
    47.  
      printf "传输完成 $(date +%Y%m%d_%A_%Z%T)\n" >>/home/lsy/sftp_file.log
    48.  
       
    49.  
      else
    50.  
      echo "取消限速"
    51.  
       
    52.  
      File=`head -1 /home/lsy/Sftp.txt`
    53.  
       
    54.  
      printf "开始传输压缩备份 $(date +%Y%m%d_%A_%Z%T)\n" >>/home/lsy/sftp_file.log
    55.  
      cd ${CLIENTDIR}
    56.  
      lftp -u 用户,密码 sftp://本地IP:端口 << EOF
    57.  
      cd ${SEVERDIR}
    58.  
      lcd ${CLIENTDIR}
    59.  
      reput ${File}
    60.  
      by
    61.  
      EOF
    62.  
      if [ $? -eq 0 ]
    63.  
      then
    64.  
      echo "传输成功。下面是文件名" >>/home/lsy/sftp_file.log
    65.  
      echo ${File} >>/home/lsy/sftp_file.log
    66.  
      sleep 3
    67.  
      else
    68.  
      echo "传输失败。" >>/home/lsy/sftp_file.log
    69.  
      sleep 5
    70.  
      exit 2
    71.  
      fi
    72.  
      sed -i 1d /home/lsy/Sftp.txt
    73.  
      printf "传输完成 $(date +%Y%m%d_%A_%Z%T)\n" >>/home/lsy/sftp_file.log
    74.  
      fi
    75.  
      done
    76.  
      curl -s "钉钉机器人" -H "Content-Type: application/json" -d "{'msgtype': 'text', 'text': {'content': \"$(date +%Y%m%d-%H%M%S):$(cat /home/lsy/sftp_file.log)\"}, 'at': {'isAtAll': true} }"

    在这里有一点非常需要注意:set net:limit-rate 500000:500000 这个参数就是lftp进行限速的命令。网上找了好多文章,他们在 set net:limit-rate 500000,500000用的是,号 经过我实测和man lftp查看参数,这里用的是:希望大家能少采坑。
    Lftp+Sftp传输总结
    以上就是我传输的过程和脚本,希望能够帮助到大家。

  • 相关阅读:
    学习web前端怎样入门?初学者赶紧看过来!
    web前端教程:CSS 布局十八般武艺都在这里了
    [zhuan]arm中的汇编指令
    adb命令
    [zhuan]使用uiautomator做UI测试
    [zhuan]java发送http的get、post请求
    Android 关于“NetworkOnMainThreadException”出错提示的原因及解决办法
    android getpost代码
    [转]Android 如何根据网络地址获取网络图片方法
    Android Json解析与总结
  • 原文地址:https://www.cnblogs.com/hushaojun/p/16355551.html
Copyright © 2020-2023  润新知