查看dm-0对应的设备映射
在使用iostat
命令时可能会看到dm-xx的设备(即Device Mapper缩写),为linux提供的一种从逻辑设备到物理设备的映射框架机制,如LVM2都是基于该机制实现的。lvdisplay|awk '/LV Name/{n=$3} /Block device/{d=$3; sub(".*:","dm-",d); print d,n;}'
在使用iostat
命令时可能会看到dm-xx的设备(即Device Mapper缩写),为linux提供的一种从逻辑设备到物理设备的映射框架机制,如LVM2都是基于该机制实现的。lvdisplay|awk '/LV Name/{n=$3} /Block device/{d=$3; sub(".*:","dm-",d); print d,n;}'
recover.sh
将backup.sh
脚本备份后的数据进行恢复(恢复前需先确保已部署系统)
#!/bin/bash
#---------------------------------------
# 从备份数据中恢复OA数据
# author: SenSen 1050575278
# date: 2022/04/13
# 需先创建完oa系统后方可使用
# 注意:所有脚本需测试后方可使用!!!
#---------------------------------------
read -p "Warning! Enter 'recover' to continue : " input
if [ "$input" == 'recover' ]; then
oaDir='/web/oa/'
backDir='/bak_oa/'
sysDir=`ls /web/oa`
for f in ${sysDir}
do
if [ ! -f "${backDir}${f}.tar.gz" ]; then
echo "${f}.tar.gz not found" >> /backup/recover.log
continue
fi
curtime=`date +"%Y/%m/%d %H:%M:%S"`
tar -zxf ${backDir}${f}.tar.gz -C ${oaDir}${f}
echo "${curtime} ${f} done" >> /backup/recover.log
done
else
echo "Error: invalid input"
fi
backup.sh
后期数据量增大可考虑调整为增量备份(指定备份目录)
#!/bin/bash
#---------------------------------------
# 备份oa数据到指定目录下
# author: SenSen 1050575278
# date: 2022/04/13
# todo 调整为增量备份(当前数据量有限,暂不处理)
# 注意:所有脚本需测试后方可使用!!!
#---------------------------------------
#所在目录
dir='/web/oa/'
dist='/bak_oa/'
#指定天开始备份
backDay=(06 14 21 28)
dayNum=`date +"%d"`
#单次备份的oa数量
perNum=10
day=`date +"%Y%m%d"`
dayFile='/backup/'${day}
#自动获取系统目录文件 仅可包含oa系统文件
sysDir=`ls /web/oa`
num=0
tmp=()
for i in "${backDay[@]}"
do
if [[ "${i}" == "${dayNum}" ]]; then
if [ ! -f "${dayFile}" ]; then
touch ${dayFile}
fi
#获取指定数量的未备份oa
for f in ${sysDir}
do
#判断是否今日已执行备份
if [ `grep -c ${f} ${dayFile}` -eq 0 ];then
#记入到新数组
tmp[${num}]=${f}
((num++))
if [ ${num} -eq ${perNum} ]; then
break
fi
fi
done
#执行备份
for f in "${tmp[@]}"
do
curtime=`date +"%Y/%m/%d %H:%M:%S"`
cd ${dir}${f}
echo "${f}" >> ${dayFile}
tar -zcf ${dist}/${f}.tar.gz public/uploads/attach public/uploads/seal_apply public/uploads/ueditor public/uploads/work .env
echo "${curtime} ${f} done" >> /backup/site.log
done
fi
done
import.sh
将宝塔面板自动备份的数据库文件批量创建数据库并导入。
#!/bin/bash
#---------------------------------------
# 批量导入数据库
# author: SenSen 1050575278
# date: 2022/03/28
# 注意:所有脚本需测试后方可使用!!!
#---------------------------------------
read -p "Warning! Enter 'y' to continue : " input
#判断是否存在参数,不存在则取消
if [ "$input" == 'y' ] || [ "$input" == 'Y' ]; then
#连接数据库
mysqlPath=`which mysql`
db_con="${mysqlPath} -uroot -pxxx"
#获取备份数据所在目录
dir=/backup/mysql/
cd /backup/mysql
#自动获取系统目录文件 仅可包含oa系统文件
sysDir=`ls /backup/mysql`
for db in ${sysDir}
do
#获取db的名字 db_t002_20220327_223004.sql.gz
ext=${db##*.}
if [ "${ext}" != "sql" ]; then
dbName=${db:3:4}
sqlName=${db:0:27}
gzip -d ${db}
${db_con} -e "create database ${dbName} default character set utf8mb4 default collate utf8mb4_general_ci;"
${db_con} -e "use ${dbName}; source ${dir}${sqlName};"
echo "${dbName} done" >> import.txt
fi
done
else
echo "Error: invalid input"
fi
sed.sh
脚本功能:可批量对系统中指定文件替换内容
#!/bin/bash
#---------------------------------------
# 批量替换文件内容
# author: SenSen 1050575278
# date: 2022/03/28
# 注意:所有脚本需测试后方可使用!!!
#---------------------------------------
read -p "Warning! Enter 'y' to continue : " input
#判断是否存在参数,不存在则取消
if [ "$input" == 'y' ] || [ "$input" == 'Y' ]; then
#所在目录
dir='/web/oa/'
#自动获取系统目录文件 仅可包含oa系统文件
sysDir=`ls /web/oa`
#排除目录
excluded=()
for f in ${sysDir}
do
#获取当前时间
curtime=`date +"%Y/%m/%d %H:%M:%S"`
#排除指定目录
if [[ ${excluded[@]/${f}/} != ${excluded[@]} ]]; then
echo "jump"
continue
fi
#进入目录
cd ${dir}${f}
#备份
cp .env .env.bak
#执行对应操作
#sed -i "8s/127.0.0.1/localhost/" .env
echo "${curtime} ${f} done"
done
else
echo "Error: invalid input"
fi
解决服务器数据盘随使用时间容量不足问题,故需搭建服务器时安装lvm以便后期新增硬盘可随时调整网站系统所在分区容量等。
【安装】
yum install lvm2
8e
:fdisk /dev/vdb
n -> p -> 1 -> t -> 8e -> w
pvcreate
创建物理卷PVpvcreate /dev/vdb{1,2,3,...}
【安装云锁】
cd /usr/local/src
wget http://download.yunsuo.qianxin.com/v3/yunsuo_agent_64bit.tar.gz
tar zxvf yunsuo_agent_64bit.tar.gz
chmod +x yunsuo_install/install
yunsuo_install/install
/usr/local/yunsuo_agent/agent_smart_tool.sh -u cloud_user -p cloud_passwd
ps -ef | grep yunsuo_agent
service yunsuo start/stop/restart/status
/usr/local/yunsuo_agent/uninstall
mysql_bat.php
用于获取线上数据库中的数据或批量更新数据库中的数据。
<?php
//演示脚本 用于查询线上系统数据库问题
$dbs = ['x001', 'x002', 'x003'];
file_put_contents('mysql_bat.txt', '');
foreach ($dbs as $v) {
$mysql_conf = array('host' => 'localhost', 'db' => $v, 'db_user' => 'xxx', 'db_pwd' => 'xxx');
$mysqli = new mysqli($mysql_conf['host'], $mysql_conf['db_user'], $mysql_conf['db_pwd']);
$mysqli->query("set names 'utf8';");//编码转化
$select_db = mysqli_select_db($mysqli, $mysql_conf['db']);
if ($select_db) {
//查询律所部门名称
$deptName = $configName = '';
$sql1 = "select name from {$v}.lawfirm_dept where id=1;";
$res1 = $mysqli->query($sql1);
while ($row = $res1->fetch_assoc()) {
$deptName = $row['name'];
}
file_put_contents('mysql_bat.txt', '[new] '.$deptName.PHP_EOL, FILE_APPEND);
$res1->free();
$mysqli->close();
}else{
file_put_contents('mysql_bat.txt', '[connect error] '.$v.PHP_EOL, FILE_APPEND);
continue;
}
// sleep(1);
}