Python实现文件备份
Python实现文件拷贝
2017年8月27日
1.实现目的
统一时间对服务器某文件夹内文件进行备份保存,如若备份成功则不提示任何错误,否则将以邮件的形式告知管理员,备份出错。
2.程序流程图
主要流程图
拷贝流程图
3.代码编写
1.MyMain函数
[root@Python CheckCopyFiles]# cat MyMain.py #!/usr/bin/env python import os import sys import MyFileZip def main() : dir1 = "/root/dir1" dir2 = "/root/dir2" if os.path.isdir(dir2) == False : os.mkdir(dir2) if os.path.isdir(dir1) : MyFileZip.FileCopy(dir1,dir2) else : sys.exit(-1) if __name__ == "__main__" : main() [root@Python CheckCopyFiles]#
2.MyFile函数
[root@Python CheckCopyFiles]# cat MyFileZip.py #!/usr/bin/env python import zipfile import time import os import MySendMail def FileCopy(dir1,dir2) : try: NowDate = time.strftime("%Y-%m-%d") Zfile = dir2+ '/'+'logfile_'+NowDate+'.zip' zf = zipfile.ZipFile(Zfile,'w') for filename in os.listdir(dir1) : if os.path.isfile(dir1 + '/' + filename) : zf.write(dir1 + '/' + filename) os.remove(dir1 + '/' + filename) zf.close() except: MySendMail.SamMail(NowDate,dir1,dir2) [root@Python CheckCopyFiles]#
3.SendMail函数
[root@Python CheckCopyFiles]# cat MySendMail.py #!/usr/bin/env python import smtplib import email.mime.text def SamMail(NowDate,dir1,dir2) : HOST = "smtp.163.com" SUBJECT = "Copy File Warning" TO = "发送的帐号" FROM = "来自于账户" Remask = "Copy dirctory warning" msg = email.mime.text.MIMEText(""" <html> <body> <h1>Warning</h1> <h2>Time:%s</h2> <h2>Dirctory:%s</h2> <h2>Remask:%s</h2> </body> </html> """ % (NowDate,dir1,"Copy File Error"),"html","utf-8") msg['Subject'] = SUBJECT msg['From'] = FROM msg['TO'] = TO try: server = smtplib.SMTP() server.connect(HOST,') server.starttls() server.login("帐号","密码") server.sendmail(FROM,TO,msg.as_string()) server.quit() except: print ("Send mail Error") [root@Python CheckCopyFiles]#
4.实现效果
4.1 建立新的文件
[root@Python ~]# touch /root/dir1/7 /root/dir1/8 [root@Python ~]#
4.2 执行代码
[root@Python ~]# python /root/python/CheckCopyFiles/MyMain.py [root@Python ~]#
4.3 查看文件
[root@Python ~]# ls -l /root/dir1 -a total 0 drwxrwxrwx. 2 root root 6 Aug 27 09:26 . dr-xr-x---. 6 root root 201 Aug 27 09:26 .. [root@Python ~]#
[root@Python ~]# ls -l /root/dir2/ total 4 -rw-r--r--. 1 root root 218 Aug 27 09:28 logfile_2017-08-27.zip [root@Python ~]# unzip -v /root/dir2/logfile_2017-08-27.zip Archive: /root/dir2/logfile_2017-08-27.zip Length Method Size Cmpr Date Time CRC-32 Name -------- ------ ------- ---- ---------- ----- -------- ---- 0 Stored 0 0% 08-27-2017 09:27 00000000 root/dir1/7 0 Stored 0 0% 08-27-2017 09:27 00000000 root/dir1/8 -------- ------- --- ------- 0 0 0% 2 files [root@Python ~]#
由此可见,dir1中的文件已经备份至/root/dir2/logfile_2017-08-27.zip中,且已经删除了原文件
4.3 查看发送邮件效果
修改一下源码:
[root@Python CheckCopyFiles]# cat MyFileZip.py #!/usr/bin/env python import zipfile import time import os import MySendMail def FileCopy(dir1,dir2) : try: NowDate = time.strftime("%Y-%m-%d") Zfile = dir2+ '/'+'logfile_'+NowDate+'.zip' zf = zipfile.ZipFile(Zfile,'w') for filename in os.listdir(dir1) : if os.path.isfile(dir1 + '/' + filename) : zf.write(dir1 + '/' + filename) os.remove(dir1 + '/' + filename) zf.close() sys.exit() except: MySendMail.SamMail(NowDate,dir1,dir2) [root@Python CheckCopyFiles]#
22行 sys 模块并未导入,故一定会出错
执行效果如下:
[root@Python ~]# python /root/python/CheckCopyFiles/MyMain.py 2 [root@Python ~]#
收到邮件的效果如下:
只要把脚本写入crontab,那样就可以按时执行了,例如:
[root@Python CheckCopyFiles]# crontab -l 00 14 * * 0 /usr/bin/python /root/python/CheckCopyFiles/MyMain.py [root@Python CheckCopyFiles]#
意思是每周日14点调用/usr/bin/python 去执行/root/python/CheckCopyFiles/MyMain.py文件
至此,由python写的备份脚本已经全部完成,人生苦短,我用python
Python实现文件备份的更多相关文章
- Python实例学习-文件备份
1. 介绍 通过实例学习Python的使用,该实例来自文献[1]中的第11章解决问题. 由于没有搞清楚Win7下如何通过命令行调用zip命令,所以采用7z[2],采用7-zip命令行版本[3],版本号 ...
- Python/CMD 文件备份
1.使用Python压缩文件并另存 import zipfile, os #备份文件ZIP格式: folder 目标文件夹 : Targetfolder:另存地址 def backuptozip(fo ...
- Python检查 文件备份是否正常 云备份进程是否正常运行
场景:服务器自动备份数据库文件,每两小时生成一个新备份文件,通过云备份客户端自动上传,需要每天检查是否备份成功. 实现:本脚本实现检查文件是否备份成功,进程是否正常运行,并且发送相关邮件提醒. #! ...
- python项目练习地址
作者:Wayne Shi链接:http://www.zhihu.com/question/29372574/answer/88744491来源:知乎著作权归作者所有,转载请联系作者获得授权. 目前是3 ...
- 从0开始的Python学习013编写一个Python脚本
通过之前的学习我们已经了解了Python的很多基础运用了,现在我们尝试着做一个有使用价值的小脚本. 问题 需求: 我想要一个可以给我备份重要文件的程序. 需求分析: 首先文件是有存储路径,文件的路径和 ...
- python项目推荐(转载知乎)
作者:Wayne Shi链接:https://www.zhihu.com/question/29372574/answer/88744491来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商 ...
- Python代码样例列表
扫描左上角二维码,关注公众账号 数字货币量化投资,回复“1279”,获取以下600个Python经典例子源码 ├─algorithm│ Python用户推荐系统曼哈顿算法实现.py│ ...
- Python输入输出及其他
print用法 print会输出一个\n,也就是换行符,这样光标移动到了下一行行首,接着输出,之前已经通过stdout输出的东西依旧保留,而且保证我们在下面看到最新的输出结果.回车 \r 本义是光标重 ...
- Python知乎上推荐的项目
原文地址:https://www.zhihu.com/question/29372574/answer/88744491 作者:Wayne Shi链接:https://www.zhihu.com/qu ...
随机推荐
- linux下rsync+inotify实现服务器之间文件实时同步
先介绍一下rsync与inotify. 1.rsync 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例 ...
- txt写入时报错出现:正由另一进程使用,原来是多此一举的操作
//if (!File.Exists(newfilepath + "\\" + name + num + ".txt")) //{ // File.Create ...
- C# 解决SharpSvn启动窗口报错 Unable to connect to a repository at URL 'svn://....'
在远程机打开sharpsvn客户端测试,结果报错 Svn启动窗口报错 Unable to connect to a repository at URL 'svn://...' 咋整,我在win10我的 ...
- Jsonpath的基本使用
JSONPath - 是xpath在json的应用. xml最大的优点就有大量的工具可以分析,转换,和选择性的提取文档中的数据.XPath是这些最强大的工具之一. 如果可以使用xpath来解析js ...
- 如何修改隐藏Zblog/WordPress默认后台登录地址
我相信很多博主站长都遇到过站点被暴力破解,虽然未被破解,但是经常收到那些尝试登录失败的邮件提醒也会心慌慌的.对于这种情况,最好的办法就是修改/隐藏我们的后台登录地址. 关于zblogASP后台登录地址 ...
- MySQL学习笔记-cache 与 buffer
Cache和Buffer是两个不同的概念,简单的说,Cache是加速"读",而 buffer是缓冲"写",前者解决读的问题,保存从磁盘上读出的数据,后者是解决写 ...
- Delphi--最强大的开发工具(欢迎转载)
最强大的开发工具 Delphi 目录 --------------------------------------------------------------------------- 前言 De ...
- centos7中输入ifconfig出现ens33,没有eth0(转)
vmware安装的centos7中没有出现eth0网卡,也没有ip,不能上网,输入ifconfig后如下图 解决办法 1.编辑网卡的配置文件 vi /etc/sysconfig/network-scr ...
- 部署描述符(web.xml)和标注(annotation)
部署描述符(web.xml) 详细信息可在http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/index.html上下载web- ...
- Spring ConversionService 类型转换(一)Converter
Spring ConversionService 类型转换(一)Converter Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.h ...