python上传ftp_python下操作ftp上传

#!/usr/local/bin/python3.5###Description: 上传业务log到NFS199###Author: Danny.Deng###DateTime: 2016-11-25

importos,sys,shutil,time,datetime,re,socket,subprocess,ftplib##########################

backup_dir = "/dockerlogs/"

###############ip地址依赖hosts文件中的hostname解析

ip_addr =socket.gethostbyname(socket.gethostname())

ports=sorted(os.listdir(backup_dir))

yesterday= (datetime.datetime.now() - datetime.timedelta(days=1)).strftime("%Y%m%d")

thirday= (datetime.datetime.now() - datetime.timedelta(days=2)).strftime("%Y%m%d")

yearday= (datetime.datetime.now() - datetime.timedelta(days=365)).strftime("%Y%m%d")###############取log文件

pattern = re.compile(r'' + thirday + '*.log$')

year_pattern= re.compile(r'' + yearday + '*.log$')#pattern = re.compile(r'' + thirday + '*.log' )###############取服务端口列表目录

for port in(ports):

port_dir= backup_dir +port

ftp_dir= ip_addr + "/" +port##############判断ftp上是否有对应目录,没有则创建,此次判断是两个目录 如:192.168.20.130/8000 这两级是否存在

ftp = ftplib.FTP("192.168.xxxxx")

ftp.login("syxxx","xxxx",10)try:

ftp.mkd(ip_addr)

ftp.cwd(ip_addr)try:

ftp.mkd(port)

ftp.quit()exceptftplib.error_perm:

ftp.quit()exceptftplib.error_perm:

ftp.cwd(ip_addr)try:

ftp.mkd(port)

ftp.quit()exceptftplib.error_perm:

ftp.quit()##############取端口目录下的service目录

for services insorted(os.listdir(port_dir)):

services_dir= port_dir + "/" +services##############判断services目录是否存在,即第三级 如:192.168.20.130/8000/yunwei

ftp = ftplib.FTP("19xxxxx")

ftp.login("sxxx","sxxxxx",10)try:

ftp.cwd(ftp_dir)exceptftplib.error_perm:pass

try:

ftp.mkd(services)exceptftplib.error_perm:

ftp.quit()#############遍历service目录中的符合的文件

for file insorted(os.listdir(services_dir)):

match=pattern.search(file)

y_match=year_pattern.search(file)ifmatch:#############匹配到文件后进行 文件名 更换操作,方便上传

ftpdir_service = ftp_dir + "/" +services#############登录到ftp上的对应目录,准备上传

ftp = ftplib.FTP("xxxxx")

ftp.login("xxxxx","xxxxxx",10)try:

ftp.cwd(ftpdir_service)exceptftplib.error_perm:passfilename= services_dir + "/" +file

file_gz= file + ".gz"

#############上传压缩文件到ftp

os.environ['filename'] =str(filename)

os.system('gzip $filename')

filename_gz= filename + ".gz"

#############只读模式打开本地需要上传的文件

filename_put = open(filename_gz,'rb')

ftp.storbinary('STOR %s' %os.path.basename(filename_gz),filename_put)

os.remove(filename_gz)#############替换文件日期,即取出一年前的文件格式进行后续的ftp.delete

year_filename =filename_gz.replace(thirday,yearday)#############错误处理,如果文件不存在时 pass

#ftp.dir(file_gz)

try:

ftp.delete(year_filename)exceptftplib.error_perm:pass

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值