Bash 常用代码

一,判断文件是否存在

# 定义文件位置
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)后 就生成了这个文件



声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
随机推荐
Debian11 安装笔记2:编译安装PHP
FFmpeg 修改默认音轨
Node.js process 模块
WordPress 密码生成和密码验证
如何使主题支持 Woocommerce
JavaScript navigator对象
ReferenceError: __dirname is not defined in ES module scope
JavaScript 操作 cookie