新增bf工具;更新README.md

This commit is contained in:
huty 2023-12-15 17:03:12 +08:00 committed by huty
parent 7f760dd608
commit d0ab018157
2 changed files with 170 additions and 0 deletions

View File

@ -124,3 +124,40 @@ cvs / 2 /tmp/clamav
``` bash ``` bash
cvs /home 2 /tmp/clamav cvs /home 2 /tmp/clamav
``` ```
```
<br/>
## bf
备份文件工具。
**所需依赖:**
- openssl
- 如保存备份文件到腾讯云 COS则需安装coscli
- 如保存备份文件到华为云 OBS则需安装obsutil
**参数说明:**
- `$1` 备份文件名称
- `$2` 备份文件路径
- `$3` 备份文件加密秘钥路径
**使用方式:**
```bash
bf 备份文件名称 备份文件路径 备份文件加密秘钥路径
```
示例:
- 备份 `/opt/gitea` 目录
``` bash
bf gitea /opt/gitea
```
- 备份 `/opt/gitea` 目录,同时使用 `/root/gitea.key` 作为秘钥加密备份文件
``` bash
bf gitea /opt/gitea /root/gitea.key
```

133
bf Executable file
View File

@ -0,0 +1,133 @@
#!/bin/bash
# 备份目录脚本
## 参数配置
### 当前的日期、日期时间
date=`date +%Y%m%d`
datetime=`date +%Y%m%d`_`date +%H%M%S`
### 需要备份的目录名称
dirName=$1
### 需要备份的文件夹(绝对路径)
backupPath=$2
### 备份成果文件名称
backupFileName=$dirName"_backup_"$datetime".tar.gz"
### 是否生成备份成果文件哈希值【0不生成1生成】
generateBackupFileSHA=1
### 是否加密【0不加密1加密】
needEncrypt=1
### 加密秘钥文件(秘钥为文件的第一行内容)
encryptPasswordFile=$3
### 备份模式【0备份到本地目录1备份到华为云OBS2备份到腾讯云COS】
model=2
### 备份文件保存路径(仅当 model 为 0 时生效)
targetsPath=/bak/$dirName
### obsutilOBS工具 路径(绝对路径)
obsutil=/opt/obsutil/obsutil
### OBS 桶名称(仅当 model 为 1 时生效)
obsBucketName=demo
### OBS 目录(仅当 model 为 1 时生效)
obsFolderName=$dirName
### coscliCOS工具路径绝对路径
coscli=/opt/coscli/coscli
### COS 桶名称(仅当 model 为 2 时生效)
cosBucketName=demo
### COS 目录(仅当 model 为 2 时生效)
cosFolderName=$dirName
### COS 对象类型(仅当 model 为 2 时生效【STANDARD标准存储MAZ_STANDARD标准存储多AZSTANDARD_IA低频存储MAZ_STANDARD_IA低频存储多AZMAZ_INTELLIGENT_TIERING智能分层存储ARCHIVE归档存储DEEP_ARCHIVE深度归档存储】
cosStorageClass=STANDARD
### 临时路径(临时的工作目录)
tmpPath=/tmp/backup/$dirName/$date
## 相关方法
### 创建临时目录
createTmpPath () {
echo '------------------------------ 开始创建工作目录... ------------------------------'
mkdir -pv $tmpPath
echo '------------------------------ 工作目录创建完成! ------------------------------'
}
### 压缩备份目录
condense () {
echo '------------------------------ 开始压缩备份目录... ------------------------------'
cd $tmpPath
tar czPf $backupFileName $backupPath
echo '------------------------------ 备份目录压缩成功! ------------------------------'
}
### 生成备份文件哈希值
generateSHA () {
echo '------------------------------ 开始生成备份文件哈希... ------------------------------'
cd $tmpPath
openssl dgst -sha512 -out $backupFileName'_SHA512' $backupFileName
mkdir -pv $targetsPath
mv $backupFileName'_SHA512' $targetsPath
echo '------------------------------ 备份文件哈希生成成功( 哈希文件见:' $targetsPath ' ------------------------------'
}
### 加密备份文件
encrypt () {
echo '------------------------------ 开始加密备份文件... ------------------------------'
cd $tmpPath
mv $backupFileName bak_$backupFileName
openssl enc -e -aes256 -a -kfile $encryptPasswordFile -in bak_$backupFileName -out $backupFileName
rm -rf bak_$backupFileName
echo '------------------------------ 备份文件加密成功! ------------------------------'
}
### 将备份文件保存到本地
saveToLocal () {
echo '****************************** 使用本地模式,将保存备份文件到本地目录( '$targetsPath' ******************************'
mkdir -pv $targetsPath
mv $tmpPath/$backupFileName $targetsPath/$backupFileName
}
### 将备份文件保存到华为云 OBS
saveToOBS () {
echo '****************************** 使用 OBS 模式,将保存备份文件到 OBS 桶( '$obsBucketName' ******************************'
$obsutil mkdir obs://$obsBucketName/$obsFolderName
$obsutil cp -f $tmpPath/$backupFileName obs://$obsBucketName/$obsFolderName/$backupFileName
rm -rf $tmpPath/$backupFileName
}
### 将备份文件保存到腾讯云 COS
saveToCOS () {
echo '****************************** 使用 COS 模式,将保存备份文件到 COS 桶( '$cosBucketName' ******************************'
$coscli cp $tmpPath/$backupFileName cos://$cosBucketName/$cosFolderName/$backupFileName --storage-class $cosStorageClass
rm -rf $tmpPath/$backupFileName
}
### 保存备份文件
save () {
echo '------------------------------ 开始保存备份文件... ------------------------------'
case $model in
0)
saveToLocal
;;
1)
saveToOBS
;;
2)
saveToCOS
;;
*)
saveToLocal
;;
esac
echo '------------------------------ 备份文件保存成功! ------------------------------'
}
## 开始备份
echo '===================================================================================================='
echo `date +%Y-%m-%d` `date +%H:%M:%S`
echo '============================== 开始备份 '$dirName' ...... =============================='
### 创建工作目录
createTmpPath
### 打包备份目录
condense
### 加密备份文件
if [ $needEncrypt == 1 ];then
encrypt
fi
### 生成备份文件哈希
if [ $generateBackupFileSHA == 1 ];then
generateSHA
fi
### 保存备份文件
save
echo '============================== '$dirName' 备份成功!!! =============================='
echo `date +%Y-%m-%d` `date +%H:%M:%S`
echo '===================================================================================================='