找回密码
 立即注册
搜索
查看: 1675|回复: 11

[软件] 这几天折腾的一个备份文件的想法

[复制链接]
     
发表于 2020-1-6 11:56 | 显示全部楼层 |阅读模式
本帖最后由 longxiao7 于 2020-1-6 17:21 编辑

先说目的
    看着某国内盘近80个T的空间,闲的蛋疼,打起了它的注意。想着把不重要的文件备份到上面一份。例如:电视剧,歌曲,软件。
为什么说是不重要的文件呢?
    众所周知网盘备份是不靠谱的,运营商可能跑路,文件可能被和谐。
那为啥还要折腾呢?
    多一份备份,多一份安全。
难点在哪里?
    网络速度,文件完整性
如何解决?
    秒传+MD5校验+校验文件完整性和修复不完整文件工具
    校验文件完整性和修复不完整文件工具 平时常见的就是 WinRAR的恢复记录功能了,但是重新打包文件会造成无法秒传。所以这里用一个叫做Par2的软件,这个功能就类似于恢复记录,但是并不需要打包文件。    Windows下可以生成par2的工具QuickPar for Windows 或者 MultiPar ,由于大部分人都会用win系统下的软件这里就不展开讲解了。
    我这里主要细说一下我在用的Ubuntu下如何处理这个问题。

首先我们要统计文件的md5,我这里是以一个目录为单位,统计目录里除了hash目录以外,所有的文件md5,并且写入到hash目录下的一个文件汇总
新建一个sh 文件,内容如下
  1. #!/bin/bash
  2. mkdir -m 777 hash
  3. find . -path ./hash -prune -type f -o -print0 | xargs -0 md5sum > ./hash/hash.md5 \;
  4. sed '0,/^/s/^/\xEF\xBB\xBF/' ./hash/hash.md5 > ./hash/hash_u8bom.md5

复制代码
这里我生成了两个文件,原因是linux默认是utf-8,写入无bom文件头的,如果这个文件到win下系统记事本打开会乱码,所以我又加了一个带bom文件头的版本 便于win下查看。
保存这个文件并且复制到/usr/local/bin/下。改名成makehash。并且给它添加可执行权限
  1. chmod +x makehash
复制代码

这个当在数据目录中执行makehash的时候就会开始统计md5
  1. cd /数据目录/
  2. makehash
复制代码


接下来是安装par2,
  1. sudo apt-get install par2
复制代码
给一个文件建立par2索引
  1. par2 c -r3 -n1 小电影.mp4.par2 小电影.mp4
复制代码
-r3是指3%的冗余,-n1是只用一个冗余数据文件,如果不加这个会出现很多个par2文件。
但是这里有两个问题,
<1> par2这个东西实现的比较原始,并不支持路径,所以也只能切到文件目录里面执行命令
<2> 生成的结果也在当前目录,和原始文件混在一起,日常使用感觉很不方便
为了解决这个问题 我单独写了一个脚本,由于不是很熟悉shell,我选择了用php来做这个事
安装php
  1. sudo apt-get install php
复制代码
脚本我用附件的方式提供下载吧,原因是dz对代码支持有限,缩进全没了。
这里简单说一下我遇到的困难,首先是文件名有引号的情况,会影响调用。所以我选择了bash作为调用方案
因为bash有这么一个语法
echo  $'字\'符串';

这样可以在单引号里面转义单引号。
然后是我把文件夹结构对应的建立在了hash子目录下,把生成的par2复制到对应目录中去。

使用方法
把文件改名ppar2 也放到/usr/local/bin/下,使用方法和makehash脚本一样,都是先cd到对应目录,然后执行命令。
此时脚本会递归的处理除了hash目录以外所有的文件。注意这一步很吃CPU和硬盘读写,大文件会占用很久的时间。
当脚本执行完,把hash目录单独保存,其余文件秒传到网盘,就完成了。

总结:想的挺好,可惜折腾的挺累。弄完都懒得继续备份了,哈哈。权当娱乐算了,各位看看就好,切勿当真,数据无价,折腾需谨慎


补充一些参考网页:


ppar2.zip

1015 Bytes, 阅读权限: 30, 下载次数: 2

回复

使用道具 举报

发表于 2020-1-6 12:00 | 显示全部楼层
怎么还有下一页的这也太高级了吧
回复

使用道具 举报

     
 楼主| 发表于 2020-1-6 12:00 | 显示全部楼层
夜语 发表于 2020-1-6 12:00
怎么还有下一页的这也太高级了吧

我也才发现这个功能,哈哈 不过已经取消了
回复

使用道具 举报

     
发表于 2020-1-6 13:40 来自手机 | 显示全部楼层
php-cli写shell脚本也太顶了。学点shell或者python平时很好用的

—— 来自 OnePlus HD1900, Android 10上的 S1Next-鹅版 v2.2.0.1
回复

使用道具 举报

发表于 2020-1-6 14:48 | 显示全部楼层
par2应该是支持路径的
另外-B设置的basepath是指.par2冗余文件内记录源文件文件名的基础路径,而不会变更par2工作目录
回复

使用道具 举报

     
 楼主| 发表于 2020-1-6 14:55 | 显示全部楼层
lwa190212 发表于 2020-1-6 14:48
par2应该是支持路径的
另外-B设置的basepath是指.par2冗余文件内记录源文件文件名的基础路径,而不会变更pa ...

奇怪,当时我没测试成功 还以为软件有问题 那估计是我写错了
回复

使用道具 举报

发表于 2020-1-6 15:12 | 显示全部楼层
longxiao7 发表于 2020-1-6 14:55
奇怪,当时我没测试成功 还以为软件有问题 那估计是我写错了

我觉得不太了解这个par2具体步骤的只接丢给他们脚本可能会很不好使
比如有个文件路径是/1/2/3
如果basepath设为/1,然后不了解的人自己跑到/1/2里去校验,就会显示缺少2/3这个文件
所以脚本还是得自己写,大家整理逻辑或多或少有些区别,自己为自己负责就行了
回复

使用道具 举报

     
 楼主| 发表于 2020-1-6 15:24 | 显示全部楼层
lwa190212 发表于 2020-1-6 15:12
我觉得不太了解这个par2具体步骤的只接丢给他们脚本可能会很不好使
比如有个文件路径是/1/2/3
如果basepa ...

这东西可以对多个文件同时做索引,我是为了避免那样,要对每个文件单独做
所以就没想那么多,直接用脚本处理了
回复

使用道具 举报

     
发表于 2020-1-6 22:33 | 显示全部楼层
对于国产程序来说md5一致到时候直接和谐成8秒 你拿什么恢复数据?

  -- 来自 能手机投票的 Stage1官方 iOS客户端
回复

使用道具 举报

     
发表于 2020-1-6 22:44 | 显示全部楼层
国内网盘真不靠谱的,还不如自己买硬盘
回复

使用道具 举报

     
发表于 2020-1-7 02:24 来自手机 | 显示全部楼层
秒传和备份两个需求完全自相矛盾啊。
回复

使用道具 举报

     
 楼主| 发表于 2020-1-7 16:13 | 显示全部楼层
刘佐 发表于 2020-1-6 22:33
对于国产程序来说md5一致到时候直接和谐成8秒 你拿什么恢复数据?

  -- 来自 能手机投票的 Stage1官方 iOS ...

多一份备份,多一份安全。
我主楼说了,重要数据要有多份备份,但是多一份网盘的 有什么不好?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-9-26 05:24 , Processed in 0.037306 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表