rsync配合ssh在不稳定网络下传输大文件

今天的工作需要将一个很大的文件传输出远程主机上,远程主机只开启了sshd服务,仅允许ssh登录,不允许安装其它软件,到远程主机的网络很不稳定。

首先尝试使用scp,由于网络很不稳定,传输20~30M,网络就断了,然后又从头重新传。后来想到rsync貌似可以使用ssh通道,于是写了下面的脚本。

#!/bin/bash
# rsync_copy.sh

export RSYNC_RSH="ssh -i /home/test/.ssh/id_rsa -c arcfour -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=quiet -o ServerAliveInterval=15 -o ServerAliveCountMax=2"
rsyncSrcFile=$1
rsyncDestFile=$2
rsyncSuccess=-1
while [ $rsyncSuccess -ne 0 ]
do
 rsync -avq --partial --inplace $rsyncSrcFile $rsyncDestFile
 rsyncSuccess=$?
done

这个脚本的两个参数格式均可以是 /home/test/a.iso 或 [email protected]:/root/a.iso

#执行前需要作ssh密钥无密码登录
ssh-copy-id -i /home/test/.ssh/id_rsa [email protected]
#执行下面的命令,然后就可以登出去happy了,明天早上再登入远程主机检查文件,一切ok了
./rsync_copy.sh /home/test/a.iso [email protected]:/root/a.iso > /dev/null 2>&1 &
时间: 2024-11-05 21:36:09

rsync配合ssh在不稳定网络下传输大文件的相关文章

个人第一个开源分布式项目distributeTemplate的实现三 网络通讯netty传输大文件

今天 我将讲讲网络通讯,这里我初始版本 由于采用的事Netty框架  所以 这里讲网络Netty在我们这里是怎么使用的,下周开始添加rpc lucene内容了 实现之后的0.2 0.3版本,后面将会去掉netty依赖 采用原生的NIO2 (aio) 异步非阻塞方式 实现自己网络通讯,也就是说 这部分可能会实现一个简单的但是比netty精简高效的网络框架,后期做出来 可能会单独开一个分支开源出来,netty说白了 就是 事件驱动 以及 NIO 加一些协议 以及 异常 处理,废话不多说了. 我最近

怎么解决FTP传输大文件严重丢包的问题?

通过FTP方式把公司总部的大体量文件传输到国内多地,或者发往国外,经常遇到长距离网络不可避免的时延丢包及跨运营商的情况.如何解决这个问题? 其实不仅是大文件,网络上传输的各种内容,大多数都需要解决丢包和损坏问题.只是对于大文件传输,丢包和损坏的情况可能更明显. 常用的传输方式有两种:TCP和UDP. 传统FTP是使用TCP作为传输协议的.TCP的优点是可靠稳定,在传输数据之前,会有三次握手来建立连接.其缺点是数据传输慢,效率低,占用系统资源高,易被***.因此,使用TCP在低时延和低丢包的网络环

把大象装进冰箱:HTTP传输大文件的方法

上次我们谈到了HTTP报文里的div,知道了HTTP可以传输很多种类的数据,不仅是文本,也能传输图片,音频和视频. 早期互联网上传输的基本上都是只有几k大小的文本和小图片,现在的情况则大有不同.网页里包含的信息实在太多了,随随便便一个主页HTML就有可能上百K,高质量的图片都以M论,更不要说那些电影,电视剧了,几G,几十G都有可能. 相比之下,100M的光纤固网或者4G移动网络在这些大文件的压力下都变成了小水管,无论是上传还是下载,都会把网络传输链路挤的满满当当. 所以如何在有限的带宽下高效快捷

Linux培训教程 linux系统下分割大文件的方法

在linux中分割大文件,比如一个5gb日志文件,需要把它分成多个小文件,分割后以利于普通的文本编辑器读取. 有时,需要传输20gb的大文件,Linux培训 教程件到另一台服务器,也需要把它分割成多个文件,这样便于传输数据. 以下通过五个不同的例子,来讲解Linux下分割大文件的方法,供大家参考. 例1.以每个文件1000行分割 split命令分割文件成每个文件1000行,并且文件名依次为 [前缀]aa,[前缀]ab, [前缀]ac等,默认的前缀是X,每个文件的行数为1000行. 命令: 复制代

基于RMI服务传输大文件的完整解决方案

基于RMI服务传输大文件,分为上传和下载两种操作,需要注意的技术点主要有三方面,第一,RMI服务中传输的数据必须是可序列化的.第二,在传输大文件的过程中应该有进度提醒机制,对于大文件传输来说,这点很重要,因为大文件的传输时间周期往往比较长,必须实时告知用户大文件的传输进度.第三,针对大文件的读取方式,如果采用一次性将大文件读取到byte[]中是不现实的,因为这将受制于JVM的可用内存,会导致内存溢出的问题. 笔者实验的基于RMI服务传输大文件的解决方案,主要就是围绕以上三方面进行逐步解决的.下面

解决java读取大文件内存溢出问题、如何在不重复读取与不耗尽内存的情况下处理大文件

1.传统的在内存中读取 读取文件行的标准方式是在内存中读取,Guava 和Apache Commons IO都提供了如下所示快速读取文件行的方法: 1 2 3 Files.readLines(new File(path), Charsets.UTF_8); FileUtils.readLines(new File(path)); 这种方法带来的问题是文件的所有行都被存放在内存中,当文件足够大时很快就会导致程序抛出OutOfMemoryError 异常. 例如:读取一个大约1G的文件: 1 2 3

C# Socket传输大文件

1.基础类TransferFiles,client和server都需要 using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; using System.Windows.Forms; namespace Server { public class TransferFiles { public static int SendData(

不使用软件在Win7下查找大文件的方法

最近发现了一种可以不使用软件在win7系统下查找大文件的方法,分享如下: 第一步:打开我的电脑,进入要查找文件的磁盘.然后找到上边的搜索栏,如图: 第二步:在搜索栏中输入"大小:",如图: 第三步:输入完成后,在搜索栏下会弹出一个选项栏,可以选择查找文件的大小范围,如图: 第四步:可以直接选择需要查找的文件大小范围,如我选择巨大的查找结果如图: 第五步:如果感觉巨大的范围还是不够大,可以自己填写软件大小的查找范围,如"大小:>3GB"或"大小:>

OpenAdaptor1——基于webservice传输大文件

<span style="font-family:Arial, Helvetica, sans-serif;BACKGROUND-COLOR: rgb(255,255,255)">OpenAdaptor支持XFire和CXF开发的webservice,所以开发CXF webservice,基于myeclipse开发比较容易.参照网上webrvice传输大文件示例修改 http://blog.csdn.net/kongxx/article/details/7540930<