zoukankan      html  css  js  c++  java
  • 自动备份远程机器的脚本

    上一章将ssh免密登陆的功能实现了。那么现在就将领导的需求完成吧。

    准备工作

    1. 编写备份脚本
    2. 测试脚本
    3. 安装cron (一般都有安装,但是我这个奇葩服务器却没有安装,所以就来说明一下)
    4. 生成定时任务

    基本就是上述步骤了。现在就上手做吧。

      1. cd一个目录,直接touch一个文件bak_file.sh然后对该文件进行编辑
      <pre>touch bak_file.sh
      

      vim bak_file.sh

      小轩这里直接使用了<code>vim bak_file.sh</code>当编辑完成并<code>:wq!</code>的时候就会生成一个名为bak_file.sh的文件。效果是一样的
      
      1. 编写脚本
      #!/bin/bash
      # 远程复制目录到指定目录  copy files from remote directory to local directory
      # 声明一个变量用来表示要备份的目录(当然可以写成从控制台输入,这样脚本就更通用了)
      remoteFileName=aaa
      # 调用scp命令,其中port为服务器(上篇中的机器A)开放的ssh端口号 ipaddress为服务器的ip地址(可以使用公网或局域网)
      scp -Pprot -r admin@ipaddress:/home/public/$remoteFileName /home/hart/backup/
      # 当scp完成时,输出此信息
      echo " -----------------------我是华丽的分割线---------------------"
      # 声明一个变量用来获取当前系统时间并格式化为yyyy年MM月dd日hh时mm分
      date=$(date "+%Y年%m月%d日%H时%M分")
      # 将备份的目录进行打包 打包名为:aaa2017年12月15日10时21分备份.zip
      zip -r $remoteFileName$date备份.zip $remoteFileName
      # 删除未打包目录
      rm -rf $remoteFileName`
      

      编写完以上代码按ESC键输入(英文状态):wq!回车保存
      之后修改bak_file.sh文件的权限。


      chmod u+x bak_file.sh 给当前用户添加执行权限


      3. 测试脚本(亲测可行~)


      ./bak_file.sh


    接下来安装cron工具
    首先查看一下当前系统中有没有cron这个工具

    crontab -u root -l
    这个命令是用来查看 root 用户当前的定时任务列表的。
    如果出现:-bash: crontab: command not found则代表没有安装cron

    在centos中小轩直接用yum -y install crontabs进行安装
    这里还是简要说明一下 cron的使用方法吧。

    1. 查看服务是否启动 : service crond status
    2. 停止服务: service crond stop
    3. 启动服务: service crond start
    4. 重新加载配置文件: service crond reload
    5. 给一个用户添加一条定时任务:crontab -u root -e 这样会进入编辑模式。只要会使用vim,vi的童鞋这里是没有问题的,问题是怎么写这个待会说
    6. 删除用户的定时任务:crontab -u root -r 会删除所有哦
    7. 上面说过这个命令了,查看用户定时任务列表:crontab -u root -l

    大概就这些吧。现在说一个怎么在这个crontab -u root -e 中添加任务。其实在/etc/crontab中写的很清晰了。来我们看看。

    /etc/crontab

    "#"是注释 ,不多解释

    第一个"*"跟着连线可以看到可以输入数字0-59 意为 分钟

    第二个"*"跟着连线可以找到可以输入数字0-23 意为 小时

    第三个"*"跟着连线可以找到可以输入数字1-31 意为 天

    第四个"*"跟着连线可以找到可以输入数字1-12 意为 月份

    第五个"*"跟着连线可以找到可以输入数字0-6 意为 每一周的天数 周日为0或7 或者直接输入 sun,mon,tue,wed,thu,fri,sat
    意思就是周几~~

    既然这么简单明了,那就好办了。像小轩。则写了一条 0 0 15 * * /home/hart/can-not-delete/bak_file.sh 意为每月15号0时0分执行/home/hart/can-not-delete/bak_file.sh这个脚本。对就是这样写。注意!每个"*"之间都要有一个空格,最后一个"*"与脚本之间也有空格不然会报错的哟:

    wrong

    此时输入y可以进行修改。如果输入n则会生成一个文件在/tmp/目录下面。以crontab.*为文件名。

    嗯到此定时任务完成。

    总结:

    此次编写是现学现卖。

    1. 首先以上脚本没有什么扩展性,只是为了完成当前的一个任务而做。其实可以将scp的相关信息参数化,将要保存的路径也参数话,不过可以设置成不传参,使用默认值即可。
    2. 没有做验证。不能保证scp时不出现问题。这是逻辑中的bug。还有待完善。
    3. 此次共用到了
      1. scp
      2. cron
      3. zip
      4. du -sh fileName
      5. date
      6. ntpdate -u ntp.api.bz -> 网络时间同步
        等命令进行辅助操作。
    4. 之后可能还会也一个脚本用来正则匹配文件名,删除指定字符串格式的文件。即清理备份文件继续学习mark~~
  • 相关阅读:
    Salesforce LWC学习(十二) Dependence Picklist实现
    Salesforce LWC学习(十一) port 1717报错的处理
    Salesforce LWC学习(十) 前端处理之 list 处理
    salesforce零基础学习(九十五)lightning out
    Salesforce LWC学习(九) Quick Action in LWC
    Salesforce LWC学习(八) Look Up组件实现
    第四百零一节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署virtualenv虚拟环境安装,与Python虚拟环境批量安装模块
    第四百节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5安装python3.5.1
    第三百九十九节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5安装mysql5.6
    第三百九十八节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5系统环境设置
  • 原文地址:https://www.cnblogs.com/tdg-yyx/p/8036908.html
Copyright © 2011-2022 走看看