一,判断文件是否存在
# 定义文件位置
filePath="/opt/test/log.txt"
# 获取系统时间
time=$(date "+%Y-%m-%d %H:%M:%S")
# 判断文件是否存在
if [ ! -f "$filePath" ];then
touch $filePath
echo "11111" + $time > $filePath
echo "文件创建完成"
else
echo "11111" + $time >> $filePath
echo "文件已经存在"
fi
文件是否存在的参数说明
-e 判断对象是否存在
-d 判断对象是否存在,并且为目录
-f 判断对象是否存在,并且为常规文件
-L 判断对象是否存在,并且为符号链接
-h 判断对象是否存在,并且为软链接
-s 判断对象是否存在,并且长度不为0
-r 判断对象是否存在,并且可读
-w 判断对象是否存在,并且可写
-x 判断对象是否存在,并且可执行
-O 判断对象是否存在,并且属于当前用户
-G 判断对象是否存在,并且属于当前用户组
-nt 判断file1是否比file2新 [ “/data/file1” -nt “/data/file2” ]
-ot 判断file1是否比file2旧 [ “/data/file1” -ot “/data/file2” ]
二,遍历目录压缩文件夹,并上传到 OSS
#!/bin/bash
#需要备份的文件夹
www_path='/var/www'
#获取日期
date=$(date "+%Y%m%d")
#删除备份文件夹下所有文件
rm -f /opt/backup/*
#遍历所有文件并压缩
cd $www_path
list=`ls -1`
for var in $list
do
echo "压缩文件:"$var
zip -rq "/opt/backup/"$var"-"$date $var
done
#上传到 OSS
/opt/software/ossutil64 cp -r /opt/backup oss://backup-zjk"/"$date
阿里云 OSS 参考 https://help.aliyun.com/document_detail/120075.html
需要用子账号(RAM用户)AK进行操作 https://help.aliyun.com/document_detail/53045.html
三,批量备份 MySQL 数据库
#创建备份文件夹
date=$(date "+%Y%m%d")
mkdir /opt/backup/db$date
#定义需要备份的数据库列表
databases=(
'mymytest'
'cn_restfulapi'
)
#遍历数据库列表
for(( i=0;i<${#databases[@]};i++)) do
#${#array[@]}获取数组长度用于循环
echo "备份数据库: "${databases[i]};
mysqldump -uroot -p"数据库密码" --databases ${databases[i]} > /opt/backup/db$date/${databases[i]}.sql
done;
备注:
touch 命令
一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;
二是用来创建新的空文件。
echo 命令
">" 符号重新创建一个a.txt文档,并且将字符串打印到文档里。
">>" 追加
错误提示 no crontab for root
在 root 用户下输入 crontab -e 按 Esc 按:wq 回车
主要原因是由于这个liunx服务器 第一次使用 crontab ,还没有生成对应的文件导致的,执行了 编辑(crontab -e)后 就生成了这个文件
声明:本站所有文章和图片,如无特殊说明,均为原创发布,转载请注明出处。