这算是一个学习用的脚本了,各种地方写得都应该很差吧,咕咕
一个(一堆)备份目录到tar文件,并且能按顺序恢复的脚本
支持tar的增量备份模式(不会记录删除有什么用呢)
运行 src/main.sh
,默认显示帮助信息(--help)
用-h | --help
查看帮助信息
虽然脚本文件很多但主脚本中有检测文件本身路径的逻辑,不用担心不在脚本根目录执行会无法加载其他函数的问题
在备份文件夹内会再有一层文件夹用来支持增量备份
使用-B
会自动检测是否有以前的备份组可用,如果没有(比如第一次使用)就会触发完全备份模式
使用--full-backup
参数会强制在新的文件夹里创建一个完整备份
完全备份模式也使用了
-g
参数,但放置备份的文件夹是全新的
使用--one-file-system
参数,不会打包正常根目录里的dev
这类文件夹
.
├── 1700956381_2023-11-26_07-53-01
│ ├── 1700956384_2023-11-26_07-53-04_backup.tar
│ ├── .log
│ └── .tar_snapshot
├── 1700956534_2023-11-26_07-55-34
│ ├── 1700956535_2023-11-26_07-55-35_backup.tar
│ ├── 1700956584_2023-11-26_07-56-24_backup.tar
│ ├── .log
│ └── .tar_snapshot
└── .now_backup
这里的
.log
不是脚本日志,是记录顺序的文件,日志位置和名称写在配置里
-B,--backup <压缩选项> 创建备份
--full-backup <压缩选项> 强制创建新的完全备份
从某个备份组按顺序释放文件
-R,--restore <索引方式> 选择备份文件恢复
将需要修改的文件放入src/config.d
文件夹就能生效(使用bash赋值语法)
0a.
开头的是默认配置,最好写一个新的
文件夹内的配置文件会按照名称
顺序
加载和覆盖
可以在执行脚本前检查是否为root权限
# general
NeedRoot=1
BackupFolder
是要存放备份文件的根路径
RootPath
是要备份的目录
所有目录都可以使用相对路径(相对于那堆脚本文件)
# path
BackupFolder=/usr/sys_backup
RootPath=/
强制每次备份使用完整备份
开启=不使用tar增量备份模式(-g 参数)
# general
Tar_Default_Full_Backup=1
设置日志存放的目录
# log
LogPath=./log
LogName=running.log
- 为什么不把东西都放到一起呀,这样多乱
- 那就彻底看不懂了啊w
- 还有...懒,反正有配置文件在两个文件和一堆文件也没什么区别嘛
- 为什么注释用中文,各种变量名用英文还写得稀烂
- 因为不会英语所以要练嘛,那既然不会注释还写英文那我还写它干什么
- 就是压缩解压一下怎么写了这么一大坨东西出来
- 最开始是想写一个类似于定期备份系统的脚本,弄了半天才发现tar没法记录文件的删除,但已经写了按顺序解压的逻辑了就顺便把其他的东西完善一下,反正也是在学东西嘛