编写一个Shell, 打包指定目录下的log 文件

1) 压缩每一个文件

#!/bin/bash
SRC_DIR=./Log/
DES_DIR=./Backup/$(date +%Y%m%d) 

# 目标文件夹不存在,就创建 if [ ! -d "$DES_DIR" ]; then mkdir -p "$DES_DIR" fi OLDIFS="$IFS" #保存原始的分隔符 IFS=$‘\n‘ #设置换行为分隔符
# 循环处理每一个文件
for i in $(find "$SRC_DIR" -name "*.log" ) do tar -cvzf "$i.tgz" "$i" done
# 也可以用-exec 指定命令来处理每一个文件
#find "$SRC_DIR" -name "*.log" -exec tar -cvzf {}".tgz" {} \; &> /dev/null
# 移动压缩后的文件到目标文件夹 mv
$SRC_DIR*.tgz "$DES_DIR" ls -lh "$DES_DIR" echo "The scripts exec end, Files tar successfully!" #恢复原始的分割符 IFS="$OLDIFS"

2)所有文件压缩成一个文件

#!/bin/bash
SRC_DIR=./Log/
DES_DIR=./Backup
if [ ! -d "$DES_DIR" ]; then
    mkdir -p "$DES_DIR"
fi
 
# 一次处理全部的匹配的文件,find 命令也可以添加 -user USER 就能够找出由某个特定用户所拥有的文件,
# 只找当前目录下的,不包含子目录
find $SRC_DIR -maxdepth 1 -name "*.log" -print0 | xargs -0 tar -cvzf "$DES_DIR/$(date +%Y%m%d).tgz" &>/dev/null ls -lh "$DES_DIR" echo "The scripts exec end, Files tar successfully!"

 

编写一个Shell, 打包指定目录下的log 文件

上一篇:linux中的-和--参数


下一篇:Jmeter软件安装之Mac