数据备份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





  
posted @ 2013-12-10 08:45  海滨银枪小霸王  阅读(128)  评论(0编辑  收藏  举报