精华内容
参与话题
问答
  • #!/bin/bash base_path="/data" log_base="/usr/local/nginx/logs" log_path=${base_path}/$(date -d yesterday +"%Y%m%d"...mkdir -p $log_path mv $log_base/access.log $log_path/$...
    #!/bin/bash
    base_path="/data"
    log_base="/usr/local/nginx/logs"
    log_path=${base_path}/$(date -d yesterday +"%Y%m%d")
    mkdir -p $log_path
    mv $log_base/access.log $log_path/$(date -d yesterday +"%Y%m%d%H%M").log
    kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

     

    注意:1.shell脚本开头必须为 #!/bin/bash

              2.定时任务设置命令   crontab -e     打开文本加入   */1 * * * * /data/runlog.sh   每分钟执行一次    *后面为shell脚本的绝对路径

              3. 补充些定时任务的知识

               Linux crontab是用来定期执行程序的命令          

    代表覆盖写入 > 
    追加写入 >> 
    写入命令 crontab -e 回车 
    写入运行数进程 * * * * * /usr/bin/php (这里是空格) /phpcode/test.php >> /phpcode/a.txt 
    #注释 或删掉 之后就会结束进程

           而linux任务调度的工作主要分为以下两类

    1、系统执行的工作:
        系统周期性所要执行的工作,如备份系统数据、清理缓存
    2、个人执行的工作:
       某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,
       这些工作可由每个用户自行设置

    语法

    crontab [ -u user ] file

    说明:

    crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。

    -u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。

    参数说明:

    -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI, 
    如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器] 
    (比如说 setenv VISUAL joe) 
    -r : 删除目前的时程表 
    -l : 列出目前的时程表

    时程表的格式如下:

    f1 f2 f3 f4 f5 program
     f1 是表示分钟
     f2 表示小时
     f3 表示一个月份中的第几日
     f4 表示月份
     f5 表示周
     program 表示要执行的程序
    当 f1 为 * 时表示每分钟都要执行 program,
    f2 为 * 时表示每小时都要执行程序,其馀类推
    当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行;
    f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推;
    当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次
    f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
    当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,
    f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推

       定义crontab命令

    分     小时  日    月   星期   命令或执行的shell脚本目录

       0-59  0-23   1-31  1-12  0-6

    特殊符号:* 范围的所有数字, / 每 , - 范围 , ‘,’集合

    每隔30分钟,每天晚上的凌晨3点-5点:*/30  3-5  *  *  *  

    每30分钟执行一次任务   */30 * * * *

     

     

     

     

    展开全文
  • #!/bin/bash #保存备份个数,备份31天数据 number=31 #备份保存路径 backup_dir=/root/mysqlbackup #日期 dd=`date +%Y-%m-%d-%H-%M-%S` #备份工具 ...#将要备份的数据库 database_name=shujuku ...

    #!/bin/bash

    #保存备份个数,备份31天数据
    number=31
    #备份保存路径
    backup_dir=/root/mysqlbackup
    #日期
    dd=`date +%Y-%m-%d-%H-%M-%S`
    #备份工具
    tool=mysqldump
    #用户名
    username=root
    #密码
    password=mima
    #将要备份的数据库
    database_name=shujuku

    #如果文件夹不存在则创建
    if [ ! -d $backup_dir ]; 
    then     
        mkdir -p $backup_dir; 
    fi

    #简单写法  mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql
    $tool -u $username -p$password $database_name > $backup_dir/$database_name-$dd.sql

    #写创建备份日志
    echo "create $backup_dir/$database_name-$dd.dupm" >> $backup_dir/log.txt

    #找出需要删除的备份
    delfile=`ls -l -crt  $backup_dir/*.sql | awk '{print $9 }' | head -1`

    #判断现在的备份数量是否大于$number
    count=`ls -l -crt  $backup_dir/*.sql | awk '{print $9 }' | wc -l`

    if [ $count -gt $number ]
    then
      #删除最早生成的备份,只保留number数量的备份
      rm $delfile
      #写删除文件日志
      echo "delete $delfile" >> $backup_dir/log.txt
    fi

    展开全文
  • 主要介绍了简单远程FTP定时备份Shell脚本分享,,需要朋友可以参考下
  • 写一个定时数据备份的shell脚本

    千次阅读 2018-10-19 15:37:40
    1.查看定时器状态:service crond status 或 systemctl status crond.service 表示已启动,如果报crond not found则安装定时器。如果没启动,使用:service crond start 启动。 yum install vixie-cron yum ...

    1.查看定时器的状态:service crond status 或 systemctl status crond.service
    在这里插入图片描述
    表示已启动,如果报crond not found则安装定时器。如果没启动,使用:service crond start 启动。

    yum install  vixie-cron
    yum install  crontabs
    

    2.用以下的方法启动、关闭这个cron服务:
    service crond start //启动服务
    service crond stop //关闭服务
    service crond restart //重启服务
    service crond reload //重新载入配置
    3.查看crontab服务是否已设置为开机启动,执行命令:ntsysv
    加入开机自动启动:

    chkconfig –level 35 crond on
    

    4.建shell脚本。

      vim  mongodump.sh
    
    mongodump -h localhost:27022 -d lison -o /usr/local/apache/mongoDB/
    echo "mongodump success"
    

    配置mongo的环境变量:

    vim /etc/profile
    
    #mongo Env
    export MONGO_HOME=/usr/local/mongoDB/mongodb-linux-x86_64-rhel70-3.4.10
    export PATH=$PATH:$MONGO_HOME/bin
    
    source /etc/profile
    

    报错:

    mongodump: 未找到命令
    

    解决:

    ln -s /usr/local/mongoDB/mongodb-linux-x86_64-rhel70-3.4.10/bin/mongodump /usr/bin
    

    5.设置需要执行的脚本
    新增调度任务可用两种方法:
    1)、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。
    2)、直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。
    crontab -e配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务
    查看调度任务
    crontab -l //列出当前的所有调度任务
    crontab -l -u jp //列出用户jp的所有调度任务
    删除任务调度工作
    crontab -r //删除所有任务调度工作
    直接编辑 vim /etc/crontab ,默认的文件形式如下:
    在这里插入图片描述
    前四行是有关设置cron任务运行的环境变量。

    SHELL变量的值指定系统使用的SHELL环境(该样例为bash shell),

    PATH变量定义了执行命令的路径。Cron的输出以电子邮件的形式发给MAILTO变量定义的用户名。

    如果MAILTO变量定义为空字符串(MAILTO=""),电子邮件不会被发送。执行命令或脚本时HOME变量可用来设置基目录。

    文件/etc/crontab中每行任务的描述格式如下:

    minute hour day month dayofweek command

    minute - 从0到59的整数

    hour - 从0到23的整数

    day - 从1到31的整数 (必须是指定月份的有效日期)

    month - 从1到12的整数 (或如Jan或Feb简写的月份)

    dayofweek - 从0到7的整数,0或7用来描述周日 (或用Sun或Mon简写来表示)

    command - 需要执行的命令(可用as ls /proc >> /tmp/proc或 执行自定义脚本的命令)

    root表示以root用户身份来运行

    run-parts表示后面跟着的是一个文件夹,要执行的是该文件夹下的所有脚本

    对于以上各语句,星号()表示所有可用的值。例如在指代month时表示每月执行(需要符合其他限制条件)该命令。

    整数间的连字号(-)表示整数列,例如1-4意思是整数1,2,3,4

    指定数值由逗号分开。如:3,4,6,8表示这四个指定整数。

    符号“/”指定步进设置。“/”表示步进值。如0-59/2定义每两分钟执行一次。步进值也可用星号表示。如*/3用来运行每三个月份运行指定任务。
    以“#”开头的为注释行,不会被执行。
    6.解决:You have new mail in /var/spool/mail/root
    方案一:修改系统配置文件/etc/profile,告诉系统不要去检查邮箱:

    echo "unset MAILCHECK" >> /etc/profile
    source /etc/profile
    

    方案二:指定发送邮箱。
    先查看/usr/share/下是不是有logwatch,没有则下载:

    yum install -y logwatch
    
    vim  /usr/share/logwatch/default.conf/logwatch.conf
    

    在这里插入图片描述
    故障排除
    如果没有收到 Logwatch日志报告邮件 , 请检察本地 sendmail 服务是否正常

    展开全文
  • 根据日期来进行不同级别的备份 #!/bin/bash # chkconfig: 345 99 10 #Choose to run the script by week #The script will automatically choose the backup level time=$(date +%A) ora=$(ps aux | grep ora | ...

    根据日期来进行不同级别的备份

    #!/bin/bash
    # chkconfig: 345 99 10
    #Choose to run the script by week
    #The script will automatically choose the backup level
    
    time=$(date +%A)
    ora=$(ps aux | grep ora | grep -v "grep" |  wc -l)
    date "+%Y-%m-%d %H:%M:%S" >> /home/oracle/rman.log
    
    case $time in
    
    
    'Monday')
    
    
    #cmdfile=/opt/script/opt_0_level
    if [ $ora -ne 0 ]; then
    su - oracle -c "rman target / " <<m
    run
    {
    backup incremental level 1 cumulative device type disk tag '%TAG' database;
    recover copy of database;
    backup device type disk tag '%TAG' archivelog all not backed up delete all input;
    CROSSCHECK BACKUP of database;
    delete noprompt obsolete device type disk;
    }
    m
    else
    echo "file not exist"
    fi
    ;;
    'Tuesday')
    
    
    if [ $ora -ne 0  ]; then
    su - oracle -c "rman target / "  << m
    run
    {
    backup incremental level 0 cumulative device type disk tag '%TAG' database;
    recover copy of database;
    backup device type disk tag '%TAG' archivelog all not backed up delete all input;
    CROSSCHECK BACKUP of database;
    delete noprompt obsolete device type disk;
    }
    m
    else
    echo "file not exist"
    fi
    ;;
    'Wednesday')
    
    
    if [ $ora -ne 0 ]; then
    su - oracle -c "rman target / "  << m
    run
    {
    backup incremental level 1 cumulative device type disk tag '%TAG' database;
    recover copy of database;
    backup device type disk tag '%TAG' archivelog all not backed up delete all input;
    CROSSCHECK BACKUP of database;
    delete noprompt obsolete device type disk;
    }
    m
    else
    echo "file not exist"
    fi
    ;;
    
    
    'Thursday')
    
    
    
    
    if [ $ora -ne 0 ]; then
    su - oracle -c "rman target / "  << m
    run
    {
    backup incremental level 1 cumulative device type disk tag '%TAG' database;
    backup device type disk tag '%TAG' archivelog all not backed up delete all input;
    CROSSCHECK BACKUP of database;
    delete noprompt obsolete device type disk;
    }
    m
    else
    echo "file not exist"
    fi
    ;;
    
    
    'Friday')
    
    
    if [ $ora -ne 0 ]; then
    su - oracle -c "rman target / "  << m
    run
    {
    backup incremental level 0 cumulative device type disk tag '%TAG' database;
    backup device type disk tag '%TAG' archivelog all not backed up delete all input;
    CROSSCHECK BACKUP of database;
    delete noprompt obsolete device type disk;
    }
    m
    else
    echo "file not exist"
    fi
    ;;
    
    
    'Saturday')
    if [ $ora -ne 0 ]; then
    su - oracle -c "rman target / "  << m
    run
    {
    backup incremental level 1 cumulative device type disk tag '%TAG' database;
    recover copy of database;
    backup device type disk tag '%TAG' archivelog all not backed up delete all input;
    CROSSCHECK BACKUP of database;
    delete noprompt obsolete device type disk;
    }
    m
    else
    echo "file not exist"
    fi
    ;;
    
    
    'Sunday')
    
    
    if [ $ora -ne 0 ]; then
    su - oracle -c "rman target / "  << m
    run
    {
    backup incremental level 1 cumulative device type disk tag '%TAG' database;
    recover copy of database;
    backup device type disk tag '%TAG' archivelog all not backed up delete all input;
    CROSSCHECK BACKUP of database;
    delete noprompt obsolete device type disk;
    }
    m
    else
    echo "file not exist"
    
    
    fi
    
    
    esac

     

    展开全文
  • 主要介绍了CentOS下mysql定时备份Shell脚本分享,本文使用是最简单方法,需要朋友可以参考下
  • 最近工作需要,写了一个shell脚本用来清理及备份动态业务数据表。表是以时间维度做的分区。脚本逻辑很简单,先扫mongodb库,得到所有的表名。之后遍历表名,筛选出过期的以及需要备份的。之后做删除和备份操作。注:...
  • 为什么80%码农都做不了架构师?>>> ...
  • 通过 mysqldump 和 crontab 实现定时备份 mysql 数据库 二、备份数据库的脚本如下 backMysql.sh #!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin export PATH #数据库ip DBHOST='...
  • 对任何一个已经上线网站站点来说,数据备份都是必须。无论版本更新还是服务器迁移,备份数据重要性不言而喻。人工备份数据方式不单耗费大量时间和精力,还灰常不专业说。于是,有了下面这段脚本的出现。...
  • #!/bin/bash #Name:bakmysql.sh #ThisisaShellScriptForAutoDBBackupandDeleteoldBackup #备份地址 backupdir=/home/mysqlbackup ...#备份文件后缀时间 ...time=_`date+%Y_%m_%d_%H_%...#需要备份的数据库名称 db_nam...
  • 这是一个简单MySQL数据库备份shell脚本,适用于单台Linux服务器或者VPSmysql数据库备份工作, 工作原理是使用mysqlmysqldump工具来导出数据库为.sql文件,然后将所有导出文件打包归档。 然后我们在shell脚本...
  • SCP scp是 secure copy缩写, scp是linux系统下基于ssh...win10是默认没有ssh服务,此时我们可以从官网下载Openssh客户端软件,其实说白了就是ssh命令行工具,安装好之后,记得将目录中bash.exe配置到windo...
  • 备份脚本 backupMysqlData.sh #!/bin/bash #备份SQL文件路径 backupdir=/home/hdkg/mysqldata/ #执行导出数据库操作 mysqldump --user=root --password=password --host=localhost --port=3306 dataBaseName &...
  • 备份并清除老日志Shell脚本,并附带一个清除日志(log)的shell脚本代码,需要的朋友可以参考下
  • 背景公司测试数据库放在...操作步骤第一步:写shell脚本,脚本名称:mysql_backup.sh,内容如下:#!/bin/bash #设置mysql登录用户名和密码 mysql_user="campus" mysql_password="123456" mysql_host="local...
  • 日志备份的shell脚本

    2018-05-15 10:20:00
    以前工作中写的日志备份的脚本,现记录一下日志备份脚本代码,以后工作中遇到遇到需要备份或者清理日志的时候可以拿来简单修改一下使用,减少工作量。  把备份脚本添加到Linux定时任务中,可以定时执行。  日志...
  • MySQL备份的shell脚本

    2016-06-23 12:17:00
    经过测试该脚本可以远程备份,但需要配置远程登录用户权限,经过测试啊,在把这个脚本添加到计划任务时候是无法识别mysql命令(即使是将mysql添加到环境变量也无法识别,是因为/etc/crontab这个配置文件中环境...
  • 在home下面创建back_db.sh ...#hebtu data backup shell,execute at everyday 23:00 #use crontab -l command to have a look ########################################## define parameters##############...
  • 利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的。  1、创建保存备份文件的路径/mysqldata  #mkdir /mysqldata  2、创建/usr/sbin/bakmysql文件  #vi /usr/sbin/bakmysql  ...
  • 4)在备份的同时,检查是否有10天前备份的数据库文件,如果有就删除 1、新建脚本文件mysql_db_backup.sh #切换目录 cd /usr/sbin/ #新建文件夹myshell mkdir myshell #切换进入目录 cd myshell #新建
  • 通过Linux 定时任务、Shell脚本进行文件备份 1、本地编写定时任务时间运行文件并上传至服务器A、运行脚本SignFileBackup 内容(具体的shell格式请自行查阅): #!/bin/bash#以当天日期为压缩文件名date=`date +%Y%m...
  • 也结合之前研究定时备份的脚本,今天来写一篇关于定时备份数据的文章。 我的MySQL是使用docker部署的,所以备份的命令是要通过docker进入容器,再执行备份命令。 #!/bin/bash # 设置mysql的登录用户名和密码(根据...

空空如也

1 2 3 4 5 ... 20
收藏数 668
精华内容 267
热门标签
关键字:

定时备份的shell脚本