问题场景
公司线上过期业务数据需要删除,删除前需要备份到本地一份。
思考
如何让传输速度够快? 分块多进程或多线程传输。
如何保证传输中断后,任务可以重新执行? 任务需要设置保活,传输失败能重新执行任务。
如何防止传输中断后,不至于全部重传,而是从中断处重新传送? 工具需要支持源目录和目标目录比较,传输增量部分。
远程文件同步到本地有哪些方式,优缺点?
- scp
- 优点 简单方便,安全可靠;支持限速参数
-
缺点 不支持排除目录 + 用法 scp [参数] <源地址(用户名@IP地址或主机名)>:<文件路径> <目的地址(用户名 @IP 地址或主机名)>:<文件路径>文件路径>文件路径>
scp就是secure copy,是用来进行远程文件拷贝的。数据传输使用 ssh,并且和ssh 使用相同的认证方式,提供相同的安全保证。
- rcp
- 优点
- 缺点
- 用法 目标主机需要事先打开rcp功能,并设置好rcp的权限:把源主机加入到可信任主机列表中,否则无法在源主机上使用rcp远程复制文件到目标主机。
- wget
- 优点 简单方便,支持排除目录,支持限速参数。
- 缺点 只能从远程机器将文件或文件夹下载到本地,并且远程机器需要支持ftp服务(例如启动proftpd);参数较多,使用上比scp复杂。
-
用法 wget [参数] ftp://<目标机器ip或主机名>/<文件的绝对路径> #proftpd格式文件的绝对路径>目标机器ip或主机名>
wget是一个从网络上自动下载文件的自由工具,支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理。
- rsync
- 优点 功能强大,操作类似scp,支持排除目录,支持限速参数;还支持本地复制。
- 缺点 暂无
-
用法 rsync [参数] <源地址(用户名@IP地址或主机名)>:<文件路径> <目的地址(用户名 @IP 地址或主机名)>:<文件路径>文件路径>文件路径>
rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。它的操作方式和scp和相似,但是比scp强大很多。使用双冒号分割主机名和文件路径时,是使用rsync服务器,这里不做介绍。
解决方案
- 编写保活逻辑
- 编写多任务
- 补偿