更新bf、cvs工具

This commit is contained in:
huty 2024-02-19 17:17:04 +08:00 committed by huty
parent 39b678ac02
commit 6e027d8647
2 changed files with 113 additions and 70 deletions

143
bf
View File

@ -2,58 +2,81 @@
# 备份目录脚本 # 备份目录脚本
## 参数配置 # 参数配置
### 当前的日期、日期时间 ## 版本号
version="0.2.0"
## 当前的日期、日期时间
date=`date +%Y%m%d` date=`date +%Y%m%d`
datetime=`date +%Y%m%d`_`date +%H%M%S` datetime=`date +%Y%m%d`_`date +%H%M%S`
### 需要备份的目录名称 ## 需要备份的目录名称
dirName=$1 dirName=$1
### 需要备份的文件夹(绝对路径) ## 需要备份的文件夹(绝对路径)
backupPath=$2 backupPath=$2
### 备份成果文件名称 ## 备份成果文件名称
backupFileName=$dirName"_backup_"$datetime".tar.gz" backupFileName=$dirName"_backup_"$datetime".tar.gz"
### 是否生成备份成果文件哈希值【0不生成1生成】 ## 是否生成备份成果文件哈希值【0不生成1生成】
generateBackupFileSHA=1 generateBackupFileSHA=1
### 是否加密【0不加密1加密】 ## 是否加密【0不加密1加密】
needEncrypt=1 needEncrypt=1
### 加密秘钥文件(秘钥为文件的第一行内容) ## 加密秘钥文件(秘钥为文件的第一行内容)
encryptPasswordFile=$3 encryptPasswordFile=$3
### 备份模式【0备份到本地目录1备份到华为云OBS2备份到腾讯云COS】 ## 备份模式【0备份到本地目录1备份到Amazon S32备份到华为云OBS3备份到腾讯云COS】
model=2 model=0
### 备份文件保存路径(仅当 model 为 0 时生效) ## 备份文件保存路径(仅当 model 为 0 时生效)
targetsPath=/bak/$dirName targetsPath=/bak/$dirName
### obsutilOBS工具 路径(绝对路径) ## S3 桶名称(仅当 model 为 1 时生效)
s3BucketName=demo
## S3 目录(仅当 model 为 1 时生效)
s3FolderName=$dirName
## obsutilOBS工具 路径(绝对路径)
obsutil=/opt/obsutil/obsutil obsutil=/opt/obsutil/obsutil
### OBS 桶名称(仅当 model 为 1 时生效) ## OBS 桶名称(仅当 model 为 2 时生效)
obsBucketName=demo obsBucketName=demo
### OBS 目录(仅当 model 为 1 时生效) ## OBS 目录(仅当 model 为 2 时生效)
obsFolderName=$dirName obsFolderName=$dirName
### coscliCOS工具路径绝对路径 ## coscliCOS工具路径绝对路径
coscli=/opt/coscli/coscli coscli=/opt/coscli/coscli
### COS 桶名称(仅当 model 为 2 时生效) ## COS 桶名称(仅当 model 为 3 时生效)
cosBucketName=demo cosBucketName=demo
### COS 目录(仅当 model 为 2 时生效) ## COS 目录(仅当 model 为 3 时生效)
cosFolderName=$dirName cosFolderName=$dirName
### COS 对象类型(仅当 model 为 2 时生效【STANDARD标准存储MAZ_STANDARD标准存储多AZSTANDARD_IA低频存储MAZ_STANDARD_IA低频存储多AZMAZ_INTELLIGENT_TIERING智能分层存储ARCHIVE归档存储DEEP_ARCHIVE深度归档存储】 ## COS 对象类型(仅当 model 为 3 时生效【STANDARD标准存储MAZ_STANDARD标准存储多AZSTANDARD_IA低频存储MAZ_STANDARD_IA低频存储多AZMAZ_INTELLIGENT_TIERING智能分层存储ARCHIVE归档存储DEEP_ARCHIVE深度归档存储】
cosStorageClass=STANDARD cosStorageClass=STANDARD
### 临时路径(临时的工作目录) ## 临时路径(临时的工作目录)
tmpPath=/tmp/backup/$dirName/$date tmpPath=/tmp/backup/$dirName/$date
## 相关方法 # 相关方法
### 创建临时目录 ## 帮助信息
help () {
echo 'Usage: bf 需要备份的目录名称 需要备份的目录 加密秘钥文件'
echo '参数说明:'
echo ' $1 需要备份的目录名称,将使用此名称新增备份文件夹及文件'
echo ' $2 需要备份的目录(绝对路径)'
echo ' $3 加密秘钥文件(可选,仅加密备份文件时需指定)'
echo '示例:'
echo ' 备份 home 目录: bf home /home'
echo ' 备份 home 目录,并使用 /root/home.key 文件作为秘钥加密备份文件: bf home /home /root/home.key'
echo '其他说明:'
echo ' 使用前请按实际情况修改备份文件保存方式,若使用远程存储(如 Amazon S3 等则需要安装相关cli工具并完成配置具体请参考官方文档。'
}
## 版本号
version () {
echo 'bf '$version
}
## 创建临时目录
createTmpPath () { createTmpPath () {
echo '------------------------------ 开始创建工作目录... ------------------------------' echo '------------------------------ 开始创建工作目录... ------------------------------'
mkdir -pv $tmpPath mkdir -pv $tmpPath
echo '------------------------------ 工作目录创建完成! ------------------------------' echo '------------------------------ 工作目录创建完成! ------------------------------'
} }
### 压缩备份目录 ## 压缩备份目录
condense () { condense () {
echo '------------------------------ 开始压缩备份目录... ------------------------------' echo '------------------------------ 开始压缩备份目录... ------------------------------'
cd $tmpPath cd $tmpPath
tar czPf $backupFileName $backupPath tar czPf $backupFileName $backupPath
echo '------------------------------ 备份目录压缩成功! ------------------------------' echo '------------------------------ 备份目录压缩成功! ------------------------------'
} }
### 生成备份文件哈希值 ## 生成备份文件哈希值
generateSHA () { generateSHA () {
echo '------------------------------ 开始生成备份文件哈希... ------------------------------' echo '------------------------------ 开始生成备份文件哈希... ------------------------------'
cd $tmpPath cd $tmpPath
@ -62,7 +85,7 @@ generateSHA () {
mv $backupFileName'_SHA512' $targetsPath mv $backupFileName'_SHA512' $targetsPath
echo '------------------------------ 备份文件哈希生成成功( 哈希文件见:' $targetsPath ' ------------------------------' echo '------------------------------ 备份文件哈希生成成功( 哈希文件见:' $targetsPath ' ------------------------------'
} }
### 加密备份文件 ## 加密备份文件
encrypt () { encrypt () {
echo '------------------------------ 开始加密备份文件... ------------------------------' echo '------------------------------ 开始加密备份文件... ------------------------------'
cd $tmpPath cd $tmpPath
@ -71,26 +94,32 @@ encrypt () {
rm -rf bak_$backupFileName rm -rf bak_$backupFileName
echo '------------------------------ 备份文件加密成功! ------------------------------' echo '------------------------------ 备份文件加密成功! ------------------------------'
} }
### 将备份文件保存到本地 ## 将备份文件保存到本地
saveToLocal () { saveToLocal () {
echo '****************************** 使用本地模式,将保存备份文件到本地目录( '$targetsPath' ******************************' echo '****************************** 使用本地模式,将保存备份文件到本地目录( '$targetsPath' ******************************'
mkdir -pv $targetsPath mkdir -pv $targetsPath
mv $tmpPath/$backupFileName $targetsPath/$backupFileName mv $tmpPath/$backupFileName $targetsPath/$backupFileName
} }
### 将备份文件保存到华为云 OBS ## 将备份文件保存到Amazon S3
saveToOBS () { saveToOBS () {
echo '****************************** 使用 OBS 模式,将保存备份文件到 OBS 桶( '$obsBucketName' ******************************' echo '****************************** 使用 OBS 模式,将保存备份文件到 Amazon S3 桶( '$obsBucketName' ******************************'
aws s3 cp $tmpPath/$backupFileName s3://$s3BucketName/$s3FolderName/$backupFileName
rm -rf $tmpPath/$backupFileName
}
## 将备份文件保存到华为云 OBS
saveToOBS () {
echo '****************************** 使用 OBS 模式,将保存备份文件到 华为云 OBS 桶( '$obsBucketName' ******************************'
$obsutil mkdir obs://$obsBucketName/$obsFolderName $obsutil mkdir obs://$obsBucketName/$obsFolderName
$obsutil cp -f $tmpPath/$backupFileName obs://$obsBucketName/$obsFolderName/$backupFileName $obsutil cp -f $tmpPath/$backupFileName obs://$obsBucketName/$obsFolderName/$backupFileName
rm -rf $tmpPath/$backupFileName rm -rf $tmpPath/$backupFileName
} }
### 将备份文件保存到腾讯云 COS ## 将备份文件保存到腾讯云 COS
saveToCOS () { saveToCOS () {
echo '****************************** 使用 COS 模式,将保存备份文件到 COS 桶( '$cosBucketName' ******************************' echo '****************************** 使用 COS 模式,将保存备份文件到 腾讯云 COS 桶( '$cosBucketName' ******************************'
$coscli cp $tmpPath/$backupFileName cos://$cosBucketName/$cosFolderName/$backupFileName --storage-class $cosStorageClass $coscli cp $tmpPath/$backupFileName cos://$cosBucketName/$cosFolderName/$backupFileName --storage-class $cosStorageClass
rm -rf $tmpPath/$backupFileName rm -rf $tmpPath/$backupFileName
} }
### 保存备份文件 ## 保存备份文件
save () { save () {
echo '------------------------------ 开始保存备份文件... ------------------------------' echo '------------------------------ 开始保存备份文件... ------------------------------'
case $model in case $model in
@ -109,25 +138,39 @@ save () {
esac esac
echo '------------------------------ 备份文件保存成功! ------------------------------' echo '------------------------------ 备份文件保存成功! ------------------------------'
} }
## 备份
## 开始备份 bf () {
echo '====================================================================================================' echo '===================================================================================================='
echo `date +%Y-%m-%d` `date +%H:%M:%S` echo `date +%Y-%m-%d` `date +%H:%M:%S`
echo '============================== 开始备份 '$dirName' ...... ==============================' echo '============================== 开始备份 '$dirName' ...... =============================='
### 创建工作目录 ### 创建工作目录
createTmpPath createTmpPath
### 打包备份目录 ### 打包备份目录
condense condense
### 加密备份文件 ### 加密备份文件
if [ $needEncrypt == 1 ];then if [ $needEncrypt == 1 ];then
encrypt encrypt
fi fi
### 生成备份文件哈希 ### 生成备份文件哈希
if [ $generateBackupFileSHA == 1 ];then if [ $generateBackupFileSHA == 1 ];then
generateSHA generateSHA
fi fi
### 保存备份文件 ### 保存备份文件
save save
echo '============================== '$dirName' 备份成功!!! ==============================' echo '============================== '$dirName' 备份成功!!! =============================='
echo `date +%Y-%m-%d` `date +%H:%M:%S` echo `date +%Y-%m-%d` `date +%H:%M:%S`
echo '====================================================================================================' echo '===================================================================================================='
}
# 执行方法
case $1 in
help)
help
;;
version)
version
;;
*)
bf
;;
esac

38
cvs
View File

@ -2,28 +2,28 @@
# 使用 ClamAV 扫描病毒脚本 # 使用 ClamAV 扫描病毒脚本
## 参数配置 # 参数配置
### 版本号 ## 版本号
VERSION=0.2.0 VERSION=0.2.0
### 当前的日期、日期时间 ## 当前的日期、日期时间
date=`date +%Y%m%d` date=`date +%Y%m%d`
datetime=`date +%Y%m%d`_`date +%H%M%S` datetime=`date +%Y%m%d`_`date +%H%M%S`
### 需要扫描的文件夹(绝对路径) ## 需要扫描的文件夹(绝对路径)
scanDir=${1:-/} scanDir=${1:-/}
### 病毒文件处理模式【0不处理1复制到指定目录、2移动至指定目录、3直接删除不推荐 ## 病毒文件处理模式【0不处理1复制到指定目录、2移动至指定目录、3直接删除不推荐
model=${2:-2} model=${2:-2}
### 工作目录 ## 工作目录
workPath=${3:-/opt/clamav} workPath=${3:-/opt/clamav}
### 包管理器【yumYUMdnfDNFzypperZYPPER】 ## 包管理器【yumYUMdnfDNFzypperZYPPER】
packageInstaller=${4:-yum} packageInstaller=${4:-yum}
### 病毒文件复制/转移文件夹(仅 model 为 1、2 时生效) ## 病毒文件复制/转移文件夹(仅 model 为 1、2 时生效)
virusPath=${workPath}/scan_${datetime}/virus virusPath=${workPath}/scan_${datetime}/virus
### 日志文件目录 ## 日志文件目录
logsPath=${workPath}/scan_${datetime}/logs logsPath=${workPath}/scan_${datetime}/logs
### 疑似病毒文件数量 ## 疑似病毒文件数量
infectedFileNumber=0 infectedFileNumber=0
## 相关方法 # 相关方法
## 帮助信息 ## 帮助信息
help () { help () {
echo 'Usage: cvs 需要扫描的目录 处理方式 工作目录 包管理器' echo 'Usage: cvs 需要扫描的目录 处理方式 工作目录 包管理器'
@ -48,14 +48,14 @@ help () {
version () { version () {
echo 'cvs '$VERSION echo 'cvs '$VERSION
} }
### 创建文件夹 ## 创建文件夹
createPath () { createPath () {
echo '------------------------------ 开始创建相关文件夹... ------------------------------' echo '------------------------------ 开始创建相关文件夹... ------------------------------'
mkdir -pv ${virusPath} mkdir -pv ${virusPath}
mkdir -pv ${logsPath} mkdir -pv ${logsPath}
echo '------------------------------ 相关文件夹创建完成! ------------------------------' echo '------------------------------ 相关文件夹创建完成! ------------------------------'
} }
### 判断当前发行版并设置包管理器 ## 判断当前发行版并设置包管理器
getOSRelease () { getOSRelease () {
echo '------------------------------ 开始检查 Linux 发行版 ... ------------------------------' echo '------------------------------ 开始检查 Linux 发行版 ... ------------------------------'
[ -r /etc/os-release ] && . /etc/os-release [ -r /etc/os-release ] && . /etc/os-release
@ -83,7 +83,7 @@ getOSRelease () {
echo '使用的包管理器为:' ${packageInstaller} echo '使用的包管理器为:' ${packageInstaller}
echo '------------------------------ Linux 发行版检查完成! ------------------------------' echo '------------------------------ Linux 发行版检查完成! ------------------------------'
} }
### 安装 ClamAV ## 安装 ClamAV
installClamAV () { installClamAV () {
echo '------------------------------ 开始安装 ClamAV ... ------------------------------' echo '------------------------------ 开始安装 ClamAV ... ------------------------------'
if [ "${packageInstaller}" = "yum" ]; then if [ "${packageInstaller}" = "yum" ]; then
@ -93,7 +93,7 @@ installClamAV () {
fi fi
echo '------------------------------ ClamAV 安装完成! ------------------------------' echo '------------------------------ ClamAV 安装完成! ------------------------------'
} }
### 更新 ClamAV ## 更新 ClamAV
updateClamAV () { updateClamAV () {
echo '------------------------------ 开始更新 ClamAV ... ------------------------------' echo '------------------------------ 开始更新 ClamAV ... ------------------------------'
if [ "${packageInstaller}" = "yum" ]; then if [ "${packageInstaller}" = "yum" ]; then
@ -103,13 +103,13 @@ updateClamAV () {
fi fi
echo '------------------------------ ClamAV 更新完成! ------------------------------' echo '------------------------------ ClamAV 更新完成! ------------------------------'
} }
### 更新病毒库 ## 更新病毒库
updateVirusDatabase () { updateVirusDatabase () {
echo '------------------------------ 开始更新病毒库... ------------------------------' echo '------------------------------ 开始更新病毒库... ------------------------------'
freshclam freshclam
echo '------------------------------ 病毒库更新完成! ------------------------------' echo '------------------------------ 病毒库更新完成! ------------------------------'
} }
### 扫描病毒 ## 扫描病毒
scanVirus () { scanVirus () {
echo '------------------------------ 开始扫描指定目录... ------------------------------' echo '------------------------------ 开始扫描指定目录... ------------------------------'
case ${model} in case ${model} in
@ -135,7 +135,7 @@ scanVirus () {
echo '****************************** 扫描日志见:'${logsPath}'/clamscan.log ******************************' echo '****************************** 扫描日志见:'${logsPath}'/clamscan.log ******************************'
echo '****************************** 病毒文件见:'${virusPath}',请及时处理 ******************************' echo '****************************** 病毒文件见:'${virusPath}',请及时处理 ******************************'
} }
### 扫描 ## 扫描
scan () { scan () {
echo '====================================================================================================' echo '===================================================================================================='
echo `date +%Y-%m-%d` `date +%H:%M:%S` echo `date +%Y-%m-%d` `date +%H:%M:%S`
@ -151,7 +151,7 @@ scan () {
echo '====================================================================================================' echo '===================================================================================================='
} }
## 执行方法 # 执行方法
case $1 in case $1 in
help) help)
help help