一,判断文件是否存在
# 定义文件位置 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)后 就生成了这个文件
声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。