ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Lftp+Sftp传输总结

2022-06-08 14:36:12  阅读:234  来源: 互联网

标签:Lftp log Sftp 传输 file home _% sftp lsy


背景介绍:
因为备份数据的不断扩大,需要把现网备份的数据(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传输总结
以上就是我传输的过程和脚本,希望能够帮助到大家。

标签:Lftp,log,Sftp,传输,file,home,_%,sftp,lsy
来源: https://www.cnblogs.com/hushaojun/p/16355551.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有