在linux下用bt协议修复远程的文件
2009-03-13    刘世伟   
打印自: 安恒公司
地址: HTTP://p1008.anheng.com.cn/news/article.php?articleid=1986
在linux下用bt协议修复远程的文件
有时下载一个iso或者大文件,不完整,或者通讯的过程中有错误,因为ftp和http协议并不纠错,如果网卡的自动校验和有bug,比如8169的低于25版的芯片,就存在rxoffload错误。
这个时候, 我们希望有一个工具, 可以帮我们修补一下错误的文件。BT就可以完成这个任务, BT的种子文件里有分段的校验和, 可以用来检查文件的每一段的正确性。
如果下载ftp出现错误, 就请用bt重新下载一下, 就修复了。
以最常见的bittorrent为例, 使用很简单, 只要找到对应的种子, 然后在损坏的文件目录下, 运行
btdownloadcurses.bittorrent   xxxxx.torrent  
后面跟的参数, 可以是文件名,或者种子的ftp连接, http连接。

然后就行了。

如果没有种子, 就需要自己建立一个种子了。 同时可以建立一个临时的track服务器。 用来让客户端互相沟通。
track服务器其实是个http的服务器,
bittorrent软件包带了一个简单的服务器程序bttrack.bittorrent 只需要指定2个参数, 端口和数据文件
bttrack.bittorrent  --port 9669  --dfile dfile

在终端运行上面一行, 不要关闭, 我们就有了一个track服务器, 假设此服务器的ip是www.bjlx.org.cn  那么我们可以在做种子的时候,来使用这个服务器,当然服务器一关, 种子也就失效了。
这个web服务器提供2个url  
info:  http://www.bjlx.org.cn:9669
track: http://www.bjlx,org.cn:9669/announce

用buildtorrent这个软件来制作torrent文件,后面可以用,间隔几个track服务器地址,防止失效
buildtorrent -a http://www.bjlx,org.cn:9669/announce loongson2_debian6_20100315.tar.lzme  loongson2_debian6_20100315.tar.lzma.torrent

这样就生成torrent文件了。

马上在当前目录开始做源,
btdownloadcurses.bittorrent  loongson2_debian6_20100315.tar.lzme.torrent

然后scp或者http把torrent搞到远程需要修复文件的机器上, 同样执行
btdownloadcurses.bittorrent  loongson2_debian6_20100315.tar.lzme.torrent
开始修复



torrent文件里面有2部分内容,一个是track服务器, 使用同一个torrent文件进行下载的机器, 可以通过这个指定的track服务器互相找到对方。
另一部分就是文件校验和,用来验证获取的内容的可靠与否,


还有一种叫metalink的文件, 可以整合ftp,http,bt.emule,rsync 这些协议资源在一个xml文件中, 来进行下载, 在linux下的客户端叫aira2 ,
责任编辑: admin