Skip to content

backup and restore linux folder with tar by bash script | 用 bash 脚本和 tar 备份与恢复 Linux 文件夹

Notifications You must be signed in to change notification settings

SourLemonJuice/backup-linux-dir-script

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 

Repository files navigation

bash 文件夹备份脚本

这算是一个学习用的脚本了,各种地方写得都应该很差吧,咕咕

能干什么

一个(一堆)备份目录到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权限

可以在执行脚本前检查是否为root权限

# general
NeedRoot=1

备份路径

BackupFolder是要存放备份文件的根路径
RootPath是要备份的目录

所有目录都可以使用相对路径(相对于那堆脚本文件)

# path
BackupFolder=/usr/sys_backup
RootPath=/

tar增量备份

强制每次备份使用完整备份
开启=不使用tar增量备份模式(-g 参数)

# general
Tar_Default_Full_Backup=1

日志目录

设置日志存放的目录

# log
LogPath=./log
LogName=running.log

怪问题们

  • 为什么不把东西都放到一起呀,这样多乱
    • 那就彻底看不懂了啊w
    • 还有...懒,反正有配置文件在两个文件和一堆文件也没什么区别嘛
  • 为什么注释用中文,各种变量名用英文还写得稀烂
    • 因为不会英语所以要练嘛,那既然不会注释还写英文那我还写它干什么
  • 就是压缩解压一下怎么写了这么一大坨东西出来
    • 最开始是想写一个类似于定期备份系统的脚本,弄了半天才发现tar没法记录文件的删除,但已经写了按顺序解压的逻辑了就顺便把其他的东西完善一下,反正也是在学东西嘛

About

backup and restore linux folder with tar by bash script | 用 bash 脚本和 tar 备份与恢复 Linux 文件夹

Topics

Resources

Stars

Watchers

Forks

Languages