zoukankan      html  css  js  c++  java
  • 数据备份crontab+pyhon

    数据备份文档


    描述:
    定时备份数据到新硬盘中,这个是在同一个系统中.如果是通过网络备份到另一台服务器上,则可以用简单软件即可


    细节:
    crontab+python/shell


    功能:
    ~定时备份指定文件夹中的文件到新硬盘中,时间可达到1分钟
    ~当文件夹中有修改,增加,减少时,新硬盘都会跟着一起更新(每隔一定时间)


    步骤:


    1. 挂载硬盘到/mnt/bittorrent文件夹下
    ~fdisk -l 
    ~fdisk /dev/sdb进入分区命令
    m帮助
    n新建
    ~w写入并退出
    ~格式化硬盘
    ~mkfs.ext3 /dev/sdb1对刚刚的主分区格式化
    输入信息就输入done
    ~mount挂载


    2. 更改bittorrent文件属性
    chmod o+w /mnt/bittorrent
    chmod 777 /mnt/bittorent也行


    3.编写python文件
    backups.py


    python中的变量说明:
    ~pwd_back是备份路径 /mnt/bittorrent/可更改
    ~interver_time是间隔时间,这个需要与crontab中时间间隔一致,单位是s


    chmod +x backups.py
    这个文件要放到源文件夹中,如果要更改路径,则程序要稍作修改


    4. 设置crontab
    ~crontab -e
    ~选择一个编辑器,选2
    在最后一行加入:
    # m  h  dom  mon  dow command
      0  *   *    *    *  /home/wen/test/src/backups.py
      分 时  日  月 周 命令
      0~59 0~23 1~31 1~12 0~7
      若为*则表示每
      */6 表示乘以
    这个命令就是你的python,到时自动执行这个
    ~sudo /etc/init.d/cron restart
    ~crontab -r删除所有任务
    ~
    ~查看任务crontab -l 
    一般这里没任务,不知道是为什么


    也可以直接编辑/etc/crontab文件,按里面的格式添加,如:
    * * * * * wen   cd /home/wen/test/src/ && ./backups.py 


    backups.py:

    #!/usr/bin/env python
    # coding=utf-8
    import os
    import time
    import os.path
    
    pwd_back     = '/home/wen/test/back/'
    pwd          = os.getcwd()
    bak_contents = os.listdir(pwd_back)
    src_contents = os.listdir(pwd)
    
    #暂定为60s
    interver_time = 60 
    now_time      = time.time()
    #算法:当前时间减去crontab的时间与修改时间比较
    #如果修改时间小,则表明这个文件有修改,就要备份, 否则不备份
    for files in src_contents:
        if files not in bak_contents or now_time - os.path.getatime(files) < interver_time:
            os.system("cp -f %s %s" % (files,pwd_back))
            print 'cp '+files+' to back'
            print '#'*40
    
    for file in bak_contents:
        if file not in src_contents:
            os.system("rm -f %s" % pwd_back+file )
            print 'rm '+file+' from back'
            print '#'*40
    





      
    每天早上叫醒你的不是闹钟,而是心中的梦~
  • 相关阅读:
    datalist和repeater中radiobutton单选的问题
    SQL循环在表中增加新列
    [jQuery]使用jQuery.Validate进行客户端验证(高级篇上)——不使用微软验证控件的理由
    C# Excel 行高,列宽,合并单元格,单元格边框线,冻结 关于C#操作EXCLE常见操作比较全的
    JS弹出窗口的运用与技巧(转)
    设计模式完整备忘录
    jquery + ashx + Json 操作数据
    SQL STUFF函数 拼接字符串
    获取SQL 各字段说明,表名等有效信息
    谈谈对于企业级系统架构的理解
  • 原文地址:https://www.cnblogs.com/vintion/p/4117004.html
Copyright © 2011-2022 走看看