2009年4月6日星期一

[Python]一键备份到Gmail

好吧。。我又Out了。。

整理资料。准备备份一次。15MB的rar包准备传到Gmail。手工操作太不靠谱,于是就自己写了一段Python脚本来完成这个工作。原理是:登录我的126邮箱,向Gmail发送带附件的Email。选择126的原因是网易公司在全国的CDN都比较快。。。

import smtplib, email import os, sys import hashlib
def send_mail(send_from, send_to, subject, text, attachment_bytes, auth=(), send_server='localhost'): msg = email.MIMEMultipart.MIMEMultipart() msg['From'] = send_from msg['To'] = email.Utils.COMMASPACE.join(send_to) msg['Date'] = email.Utils.formatdate(localtime=True) msg['Subject'] = subject
msg.attach( email.MIMEText.MIMEText(text) )
part = email.MIMEBase.MIMEBase('application', 'octet-stream') part.set_payload( attachment_bytes ) email.Encoders.encode_base64(part) part.add_header('Content-Disposition', 'attachment; filename=%s' % subject) msg.attach(part)
smtp = smtplib.SMTP(send_server) smtp.login(*auth) smtp.sendmail(send_from, send_to, msg.as_string()) smtp.close()
for f in sys.argv[1:]: f_name = os.path.basename(f) print '+ Uploading ' + f_name f = open(f, 'rb').read() md5 = hashlib.md5() md5.update(f) md5 = md5.hexdigest() sha1 = hashlib.sha1() sha1.update(f) sha1 = sha1.hexdigest()
send_mail( 'aaaaaa@126.com', ['bbbbbb@gmail.com'], f_name, f_name + '\r\n' + 'MD5: ' + md5 + '\r\nSHA1: ' + sha1, f, ('aaaaaa@126.com', 'aaaaaapwd'), 'smtp.126.com' )
print 'Done.'

比较Out的原因是,写完这个script就发现n个现成的了:Backup to EmailLifehacker上用Blat命令行实现,Javaeye上一个几乎一样功能的帖子GSend.pyGmail BackupSend To GMail(a.k.a. Gmailer),当然Gmail Drive Shell Extension也是很老的一个软件了。。令我感到安慰的是这些软件基本都达到了1MB以上的体积。。还有我的script可以算MD5。。。。不过没法自动切割文件。。

没有评论: