我现在使用的是deepin linux,自带备份功能,但总感觉这个备份有点。。。。
Talk is cheap,show me the screenshot。
直接看图吧,备注现在时间2020-02-13(
好像从第一次注册完账号开启自动备份后就没开过。。。
我这还算好的,最起码有个界面,那些用其他发行版的大牛们怎么办啊,全盘备份?没这必要吧,只要备份重要配置文件就够了,再说全盘备份要是碰上Linus那种只用固态硬盘的硬盘就遭殃了。
突然想起来Linux有批处理功能,于是打开vim和Google,开工!
编写程序
基本思路
这里说一下备份思路
- 把重要文件(夹)复制到临时目录(因为是机械硬盘无所谓寿命)
- 打包成zip
- 移动到u盘里
第一个功能:计时
这功能真的是强迫症福音啊,废话少说放码:
1 | start=$(date "+%s") #记录开始时间 |
就这样一个计时功能出来了,果然比某某些编程语言简单,像某语言还要引用time(逃
对了,科普一下,shell里输出是
1 | echo "exampleString" #输出文字 |
我测试了一下,没有代码时候输出0s,还是挺准的 :D
建立备份临时文件夹
此步在硬盘中建立临时备份文件夹,命名为当前时间
建立文件夹应该都会吧,所以直接上代码
1 | date=$(date +%Y%m%d%H%m%s) #获取时间 |
建立重要文件夹名单
此步建立一个数组(我习惯将列表说成数组,意义相同,以后不做解释),里面放有重要文件(夹)通报(划掉)名单
1 | copyPath=( #这是建立数组的代码 |
复制内容到临时备份文件夹
这里利用循环遍历重要文件(夹)名单复制,这个操作我们在学习Python时候应该都学过
1 | for p in ${copyPath[@]} #for循环 |
压缩
1 | pathname='/media/lakphy/DATA/baks/'$date #备份文件夹路径 date是我们之前定义的时间 |
移动到批处理程序所在目录
mv命令,这个比较简单,不解释
完整代码
来看下完整代码
codes
1 |
运行
保存为backup.sh
如果程序在电脑上的话,直接双击或者命令:
1 | ./backup.sh |
如果在外部存储器上,只能在命令行运行,命令只能是:
1 | bash backup.sh |
bash意思是解释器为bash,至于为什么是bash不是shell,这个我也不懂,我谷歌的时候写的shell啊。。。但shell真的运行不了,不信试试:
1 | shell backup.sh |
至于内部外部存储器区别,我觉得可能是外部存储器文件系统不是ext4不能加可执行权限问题
我运行了一下,速度不错,比直接复制快,毕竟cp命令玄学复制,430s完成。