centos:7.6
mysql:5.7
使用以下脚本
#!/bin/bash
#-----------------------------------------------#
#This is a free GNU GPL version 3.0 or abover
#Copyright (C) 2008 06 05
#mysql_backup Dedicated copyright by My
#-----------------------------------------------#
echo -e [`date +"%Y-%m-%d %H:%M:%S"`] start
#system time
time=`date +"%y-%m-%d"`
#host IP
host="127.0.0.1"
#database backup user
user="root"
#database password
passwd="password"
#Create a backup directory
mkdir -p /usr/local/mysql-backup/"$time"
#list database name
all_database=`/usr/bin/mysql -u$user -p$passwd -Bse 'show databases'`
#in the table from the database backup
for i in $all_database
do
/usr/bin/mysqldump -u$user -p$passwd $i > /usr/local/mysql-backup/"$time"/"$i"_"$time".sql
done
scp -r /usr/local/mysql-backup/"$time" root@47.220.89.110:/usr/local/mysql-backup/
echo -e [`date +"%Y-%m-%d %H:%M:%S"`] end
exit 0
然后centos中运行crontab -e,在里面输入定时任务的操作(保存后即时生效,正常vim操作)
# 每天凌晨三点执行该脚本,并将标准输出和错误输出写入/usr/local/mysql-backup/crontab.log
# >> 代表追加写入 > 代表覆盖写入
0 3 * * * /usr/local/mysql-backup/autoback.sh >>/usr/local/mysql-backup/crontab.log 2>&1 &
crontab 表达式计算工具:https://tool.lu/crontab/
# 2019-8-15更新,添加定时删除文件任务(由于不停的备份,导致磁盘占用问题)
# atime access time 访问时间 文件中的数据库最后被访问的时间
# mtime modify time 修改时间 文件内容被修改的最后时间
# ctime change time 变化时间 文件的元数据发生变化。比如权限,所有者等
0 3 * * * find /usr/local/mysql-backup/* -mtime +15 -exec rm -rf {} \; >>/usr/local/mysql-backup/crontab.log 2>&1 &
上面那个命令路径有问题,会把autoback.sh也一起删了...把autoback.sh放/mysql-backup外面就好了
中途遇到的问题:
尝试运行该脚本命令的时候出现
-bash: ./autoback.sh: /bin/bash^M: bad interpreter: No such file or directory
这是因为该脚本文件是dos格式的,而我们需要改成unix格式的
# 可以使用该命令判断文件,dos格式的文件行尾为^M$,unix格式的文件行尾为$
cat -A 你的脚本.sh
解决办法:
vi 你的脚本.sh
# 然后输入: set ff=unix
# 最后:wq保存退出
# 再使用cat -A 你的脚本.sh,会发现文件行尾为$
尝试运行时,提示没有权限
-bash: ./autoback.sh: Permission denied
执行ll发现该文件为-rw-r--r-- ,说明owner有读写权限没有执行权限,group、others只有读权限
权限 | 权限数值 | 二进制 | 具体作用 |
---|---|---|---|
r | 4 | 00000100 | read,读取。当前用户可以读取文件内容,当前用户可以浏览目录。 |
w | 2 | 00000010 | write,写入。当前用户可以新增或修改文件内容,当前用户可以删除、移动目录或目录内文件。 |
x | 1 | 00000001 | execute,执行。当前用户可以执行文件,当前用户可以进入目录。 |
7 = 4 + 2 + 1 读写运行权限
5 = 4 + 1 读和运行权限
4 = 4 只读权限
所以我们需要改成 -rwxr--r--
也就是 744
chmod [who] [opt] [mode] 文件/目录名
who代表对象,是以下字母中的一个或组合:
u:User,即文件或目录的拥有者。
g:Group,即文件或目录的所属群组。
o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。
a:All,即全部的用户,包含拥有者,所属群组以及其他用户。
opt则是代表操作,可以为:
+:添加某个权限
-:取消某个权限
=:赋予给定的权限,并取消原有的权限
mode则代表权限:
r:可读
w:可写
x:可执行
所以我们执行
chmod u+x 文件名
# 或者
chmod 744 文件名
网友评论