卡片召唤师
精华
|
战斗力 鹅
|
回帖 0
注册时间 2010-10-27
|
本帖最后由 longxiao7 于 2020-1-6 17:21 编辑
先说目的
看着某国内盘近80个T的空间,闲的蛋疼,打起了它的注意。想着把不重要的文件备份到上面一份。例如:电视剧,歌曲,软件。
为什么说是不重要的文件呢?
众所周知网盘备份是不靠谱的,运营商可能跑路,文件可能被和谐。
那为啥还要折腾呢?
多一份备份,多一份安全。
难点在哪里?
网络速度,文件完整性
如何解决?
秒传+MD5校验+校验文件完整性和修复不完整文件工具
校验文件完整性和修复不完整文件工具 平时常见的就是 WinRAR的恢复记录功能了,但是重新打包文件会造成无法秒传。所以这里用一个叫做Par2的软件,这个功能就类似于恢复记录,但是并不需要打包文件。 Windows下可以生成par2的工具QuickPar for Windows 或者 MultiPar ,由于大部分人都会用win系统下的软件这里就不展开讲解了。
我这里主要细说一下我在用的Ubuntu下如何处理这个问题。
首先我们要统计文件的md5,我这里是以一个目录为单位,统计目录里除了hash目录以外,所有的文件md5,并且写入到hash目录下的一个文件汇总
新建一个sh 文件,内容如下
- #!/bin/bash
- mkdir -m 777 hash
- find . -path ./hash -prune -type f -o -print0 | xargs -0 md5sum > ./hash/hash.md5 \;
- sed '0,/^/s/^/\xEF\xBB\xBF/' ./hash/hash.md5 > ./hash/hash_u8bom.md5
复制代码 这里我生成了两个文件,原因是linux默认是utf-8,写入无bom文件头的,如果这个文件到win下系统记事本打开会乱码,所以我又加了一个带bom文件头的版本 便于win下查看。
保存这个文件并且复制到/usr/local/bin/下。改名成makehash。并且给它添加可执行权限
这个当在数据目录中执行makehash的时候就会开始统计md5
接下来是安装par2,
- sudo apt-get install par2
复制代码 给一个文件建立par2索引
- par2 c -r3 -n1 小电影.mp4.par2 小电影.mp4
复制代码 -r3是指3%的冗余,-n1是只用一个冗余数据文件,如果不加这个会出现很多个par2文件。
但是这里有两个问题,
<1> par2这个东西实现的比较原始,并不支持路径,所以也只能切到文件目录里面执行命令
<2> 生成的结果也在当前目录,和原始文件混在一起,日常使用感觉很不方便
为了解决这个问题 我单独写了一个脚本,由于不是很熟悉shell,我选择了用php来做这个事
安装php
脚本我用附件的方式提供下载吧,原因是dz对代码支持有限,缩进全没了。
这里简单说一下我遇到的困难,首先是文件名有引号的情况,会影响调用。所以我选择了bash作为调用方案
因为bash有这么一个语法
echo $'字\'符串';
这样可以在单引号里面转义单引号。
然后是我把文件夹结构对应的建立在了hash子目录下,把生成的par2复制到对应目录中去。
使用方法
把文件改名ppar2 也放到/usr/local/bin/下,使用方法和makehash脚本一样,都是先cd到对应目录,然后执行命令。
此时脚本会递归的处理除了hash目录以外所有的文件。注意这一步很吃CPU和硬盘读写,大文件会占用很久的时间。
当脚本执行完,把hash目录单独保存,其余文件秒传到网盘,就完成了。
总结:想的挺好,可惜折腾的挺累。弄完都懒得继续备份了,哈哈。权当娱乐算了,各位看看就好,切勿当真,数据无价,折腾需谨慎
补充一些参考网页:
|
|