https://github.com/sourlemonjuice/backup-linux-dir-script
backup and restore linux folder with tar by bash script | 用 bash 脚本和 tar 备份与恢复 Linux 文件夹
https://github.com/sourlemonjuice/backup-linux-dir-script
backup-script bash chinese-simplified folder linux shell-script tar
Last synced: 8 months ago
JSON representation
backup and restore linux folder with tar by bash script | 用 bash 脚本和 tar 备份与恢复 Linux 文件夹
- Host: GitHub
- URL: https://github.com/sourlemonjuice/backup-linux-dir-script
- Owner: SourLemonJuice
- Created: 2023-11-08T04:15:56.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2023-12-09T18:25:54.000Z (almost 2 years ago)
- Last Synced: 2025-01-03T15:45:52.952Z (9 months ago)
- Topics: backup-script, bash, chinese-simplified, folder, linux, shell-script, tar
- Language: Shell
- Homepage:
- Size: 95.7 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# bash 文件夹备份脚本
这算是一个学习用的脚本了,各种地方写得都应该很差吧,咕咕
## 能干什么
一个(一堆)备份目录到tar文件,并且能按顺序恢复的脚本\
支持tar的增量备份模式(不会记录删除有什么用呢)---
## 使用
运行 `src/main.sh`,默认显示帮助信息(--help)\
用`-h | --help`查看帮助信息虽然脚本文件很多但主脚本中有检测文件本身路径的逻辑,不用担心不在脚本根目录执行会无法加载其他函数的问题
### 备份
在备份文件夹内会**再有一层文件夹**用来支持增量备份\
使用`-B`会自动检测是否有以前的备份组可用,如果没有(比如第一次使用)就会触发完全备份模式\
使用`--full-backup`参数会强制在新的文件夹里创建一个完整备份> 完全备份模式也使用了`-g`参数,但放置备份的文件夹是全新的\
> 使用`--one-file-system`参数,不会打包正常根目录里的`dev`这类文件夹```text
.
├── 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`不是脚本日志,是记录顺序的文件,日志位置和名称写在配置里
```text
-B,--backup <压缩选项> 创建备份
--full-backup <压缩选项> 强制创建新的完全备份
```### 恢复
从某个备份组按顺序释放文件
```text
-R,--restore <索引方式> 选择备份文件恢复
```---
## 配置
将需要修改的文件放入`src/config.d`文件夹就能生效(使用bash赋值语法)
> `0a.`开头的是默认配置,最好写一个新的\
> 文件夹内的配置文件会按照 `名称` `顺序` 加载和覆盖### 强制使用root权限
可以在执行脚本前检查是否为root权限
```shell
# general
NeedRoot=1
```### 备份路径
`BackupFolder`是要存放备份文件的根路径\
`RootPath`是要备份的目录> 所有目录都可以使用相对路径(相对于那堆脚本文件)
```shell
# path
BackupFolder=/usr/sys_backup
RootPath=/
```### tar增量备份
强制每次备份使用完整备份\
开启=不使用tar增量备份模式(-g 参数)```shell
# general
Tar_Default_Full_Backup=1
```### 日志目录
设置日志存放的目录
```shell
# log
LogPath=./log
LogName=running.log
```## 怪问题们
- 为什么不把东西都放到一起呀,这样多乱
- 那就彻底看不懂了啊w
- 还有...懒,反正有配置文件在两个文件和一堆文件也没什么区别嘛
- 为什么注释用中文,各种变量名用英文还写得稀烂
- 因为不会英语所以要练嘛,那既然不会注释还写英文那我还写它干什么
- 就是压缩解压一下怎么写了这么一大坨东西出来
- 最开始是想写一个类似于定期备份系统的脚本,弄了半天才发现tar没法记录文件的删除,但已经写了按顺序解压的逻辑了就顺便把其他的东西完善一下,反正也是在学东西嘛