初学python写个脚本练练手。。。
下文中的sedmails这个模块是我自己写的一个py文件,里面就一个send_mail函数
好了 上代码
-
#!/usr/bin/env python
-
#-*-coding:utf-8-*-
-
#filename auto backup
-
#version 1.0
-
import os,sys,time,smtplib,sedmails,commands
-
date_sys=time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
-
mail_to="qqq@163.com"
-
backup_lock='/home/qidunhu/back_lock' #备份锁文件
-
if os.path.exists('/home/qidunhu/back_lock'):#判断锁文件是否存在,若是存在则发送邮件后退出
-
sedmails.send_mail(mail_to,"备份警告","上次备份没有结束,请检查,请等待上次备份结束之后,再启动本次备份!")
-
os._exit(0)
-
else:
-
commands.getoutput("touch /home/qidunhu/back_lock") #若是没有锁文件,则创建,然后执行备份脚本
-
def get_dir(path):
-
#print path, 'n'
-
return os.listdir(path)
-
def bak_file(path,path_bak):
-
list=os.listdir(path)
-
#back_log="/home/qidunhu/qidunhu/bak_test/backup.log"
-
for i in list:
-
file_path=os.path.join(path,i)
-
file_path_bak=os.path.join(path_bak,i)
-
#print file_path_bak
-
#print file_path
-
if os.path.isdir(file_path): #判断文件路径是否为目录
-
if not os.path.isdir(file_path_bak):
-
create_dirs= '''mkdir -p '%s' ''' % (file_path_bak) #如果目录不存在则创建
-
if os.system(create_dirs) == 0: #判断目录是否存在
-
#print create_dirs
-
pass
-
else:
-
back_fail_log=file("/home/qidunhu/back_fail_log",'a')
-
print >> back_fail_log,date_sys,"创建目录失败,请检查!" '\n \n'
-
back_fail_log.close()
-
os._exit(0)
-
bak_file(file_path,file_path_bak)
-
else: #如果文件存在,则判断时间戳
-
if os.path.isfile(file_path_bak):
-
stat_bak = os.stat(file_path_bak)
-
stat_source = os.stat(file_path)
-
if stat_source.st_mtime <= stat_bak.st_mtime: #判断文件修改时间
-
continue
-
cp_comm='''cp -r '%s' '%s' ''' % (file_path,file_path_bak)
-
#print cp_comm
-
if os.system(cp_comm) == 0:
-
back_log=file("/home/qidunhu/back_log",'a')
-
print >> back_log, cp_comm,'n'
-
print >> back_log,date_sys,"以上数据备份成功!" '\n'
-
back_log.close()
-
else:
-
back_fail_log=file("/home/qidunhu/back_fail_log",'a')
-
print >> back_fail_log,date_sys,"备份失败,请检查!" '\n \n'
-
back_fail_log.close()
-
os._exit(0)
-
-
#定义源文件路径
-
path='/home/qidunhu/qidunhu/backup/'
-
#定义备份目标路径
-
path_bak= '/home/qidunhu/qidunhu/bak_test/'
-
#开始备份
-
bak_file(path,path_bak)
-
os.remove("/home/qidunhu/back_lock")#删除锁文件
-
sedmails.send_mail(mail_to,"data backup end!","Backup has been completed, please check the backup log, to confirm the data is complete path for the log: /var/log/backuplog/backup_log or /var/log/backuplog/backup_fail_log")
写完这个脚本后我发现,python有一个logging模块,可以自己记录日志,功能很是强大,但是由于比较懒,也就没有修改代码.....
阅读(2123) | 评论(0) | 转发(0) |