Linux+shell管理员的好帮手--批量解压缩

近期公司一直忙于OA的上线工作,做为一个管理员来说,需要给他们不定时提供数据备份及恢复操作,主要操作就是将生产环境中的变化数据还原到测试机器上进行测试。当然前几篇文中有也有介绍到使用shell脚本备份数据及还原数据,今天我们介绍使用shell脚本对指定目录下的数据进行压缩备份及解压覆盖操作,具体见下:

首先介绍第一个脚本:

该脚本会将/OAFS目录下的123、gavin文件夹进行压缩,然后移动到指定的目录下;

#!/bin/bash
sources="/OAFS/123 /OAFS/gavin"
target="/OAFS/BAK_DIR/"
function successfulllog() {
echo "$(date +%Y-%m-%d_%H:%M:%S) - Backup directory: $1 to $1.tar.gz and mv $target is successful" >>/var/log/tarbak.log
}
function faildlog() {
echo "$(date +%Y-%m-%d_%H:%M:%S) - Backup directory: $1 to $1.tar.gz and mv $target is Faild" >>/var/log/tarbak.log
}
for source in $sources
do
if [ -d "$source" ]; then
tar -zcPf "$source".tar.gz $source
mv $source.tar.gz $target
successfulllog $source
else
faildlog $source
fi
done

第二个脚本:我们需要将指定目录下的文件、文件夹进行独立压缩,然后移动到指定的目录下:

注:该脚本执行的时候,如果有文件的话,会将文件格式进行重新命名压缩文件命名:不会出现a.txt.tar.gz类似的格式

#!/bin/bash
sources=/OAFS/ABC/DATA
target=/OAFS/BAK_DIR
cd $sources
for source in `ls`;do
[ -f "$source" ]&& a=${source%%.*}||a=$source
tar cvzfp $a.tar.gz $source
mv $a.tar.gz $target
done

 

第三个脚本:批量执行指定目录指定文件的解压缩到指定目录;

该脚本会将/OAFS/abc目录下的压缩文件,进行解压,然后执行解压的文件会在tar命令下标记。

#!/bin/bash
sources="/OAFS/abc/"
target="/OAFS/"
echo ":${sources}:"
cd $sources
pwd
tar -zxvf zhangsan.tar.gz -C $target
tar -zxvf lisi.tar.gz -C $target

注:如果需要对指定目录下的所有压缩文件进行解压的话,我们只需要修改格式即可

tar -zxvf *.tar.gz

 

第四个脚本,批量执行文件删除,我们也是最笨的办法进行删除,因为指定目录下有多个文件,需要对指定的文件进行删除

 

#!/bin/bash
sources="/OAFS/abc/"
target="/OAFS/"
echo ":${sources}:"
cd $sources
pwd
rm -rf zhangsan
rm -rf lisi

 

第五:批量移动指定文件

批量移动文件

#!/bin/bash
sources="/OAFS/abc/"
target="/OAFS/"
echo ":${sources}:"
cd $sources
pwd
mv zhangsan.tra.gz $target
mv lisi.tar.gz $target