Python实现简单的文件传输与MySQL备份的脚本分享

用python实现简单Server/Client文件传输:

服务器端:

#!/usr/bin/python
import SocketServer, time
class MyServer(SocketServer.BaseRequestHandler):
userInfo = {
'leonis' : 'leonis',
'hudeyong' : 'hudeyong',
'mudan' : 'mudan' }
def handle(self):
print 'Connected from', self.client_address
while True:
receivedData = self.request.recv(8192)
if not receivedData:
continue
elif receivedData == 'Hi, server':
self.request.sendall('hi, client')
elif receivedData.startswith('name'):
self.clientName = receivedData.split(':')[-1]
if MyServer.userInfo.has_key(self.clientName):
self.request.sendall('valid')
else:
self.request.sendall('invalid')
elif receivedData.startswith('pwd'):
self.clientPwd = receivedData.split(':')[-1]
if self.clientPwd == MyServer.userInfo[self.clientName]:
self.request.sendall('valid')
time.sleep(5)
sfile = open('down.sh', 'rb')
while True:
data = sfile.read(1024)
if not data:
break
while len(data) > 0:
intSent = self.request.send(data)
data = data[intSent:]
time.sleep(3)
self.request.sendall('EOF')
else:
self.request.sendall('invalid')
elif receivedData == 'bye':
break
self.request.close()
print 'Disconnected from', self.client_address
print
if __name__ == '__main__':
print 'Server is started\nwaiting for connection…\n'
srv = SocketServer.ThreadingTCPServer(('ip', 50000), MyServer)
srv.serve_forever()

客户端:

import socket, time
class MyClient:
def __init__(self):
print 'Prepare for connecting…'
def connect(self):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('ip', 50000))
sock.sendall('Hi, server')
self.response = sock.recv(8192)
print 'Server:', self.response
self.s = raw_input("Server: Do you want get the 'thinking in python' file?(y/n):")
if self.s == 'y':
while True:
self.name = raw_input('Server: input our name:')
sock.sendall('name:' + self.name.strip())
self.response = sock.recv(8192)
if self.response == 'valid':
break
else:
print 'Server: Invalid username'
while True:
self.pwd = raw_input('Server: input our password:')
sock.sendall('pwd:' + self.pwd.strip())
self.response = sock.recv(8192)
if self.response == 'valid':
print 'please wait…'
f = open('down.sh', 'wb')
while True:
data = sock.recv(1024)
if data == 'EOF':
break
f.write(data)
f.flush()
f.close()
print 'download finished'
break
else:
print 'Server: Invalid password'
sock.sendall('bye')
sock.close()
print 'Disconnected'
if __name__ == '__main__':
client = MyClient()
client.connect()

由于担心服务器数据安全,所以写了这个脚本,结合上面分享的Server/Client 文件互传,可以备份网站数据到本地,安全又可靠

#!/usr/bin/python
# Filename: webbak.py
import os
import time
import tarfile

os.chdir('/home/web/') #切换目录
source = 'leonis'
bakdir = '/home/web/leonis/'
# mysql dump
dump = 'mysqldump'
dbuser = 'XXXXXXX'
dbpwd = 'XXXXXXXXXXX'
dbname = 'XXXXXXXX'
sqlfile = '/home/web/leonis/leonis.sql'
sql = "%s -u%s -p%s %s > %s" % (dump,dbuser,dbpwd,dbname,sqlfile)
if os.path.exists(sqlfile):
  os.remove(sqlfile)
else:
  print 'then will dump sql file'
result = os.popen(sql)
if result:       #
 print ("SQL backup completed!")
else:
 print ("SQL backup failed!")
# gzip 压缩 以当日日期命名
filename = bakdir + time.strftime('%Y%m%d')+'.tar.gz'
tar = tarfile.open(filename,"w:gz")
tar.add(source)
tar.close()
(0)

相关推荐

  • Python实现配置文件备份的方法

    本文实例讲述了Python实现配置文件备份的方法.分享给大家供大家参考.具体如下: 这里平台为Linux: #!/usr/bin/python #Author:gdlinjianying@qq.com import os import time source = ['/etc/sysconfig/network-scripts', '/etc/sysconfig/network', '/etc/resolv.conf'] target_dir = '/opt/' target = target_

  • python备份文件的脚本

    实际效果:假设给定目录"/media/data/programmer/project/python" ,备份路径"/home/diegoyun/backup/" , 则会将python目录下的文件按照全路经备份到备份路径下,形如: /home/diegoyun/backup/yyyymmddHHMMSS/python/xxx/yyy/zzz..... 复制代码 代码如下: import os import shutil import datetime def mai

  • python备份文件以及mysql数据库的脚本代码

    复制代码 代码如下: #!/usr/local/python import os import time import string source=['/var/www/html/xxx1/','/var/www/html/xxx2/'] target_dir='/backup/' target=target_dir+time.strftime('%Y%m%d') zip_comm='zip -r %s %s'%(target," ".join(source)) target_data

  • python实现批量下载新浪博客的方法

    本文实例讲述了python实现批量下载新浪博客的方法.分享给大家供大家参考.具体实现方法如下: # coding=utf-8 import urllib2 import sys, os import re import string from BeautifulSoup import BeautifulSoup def encode(s): return s.decode('utf-8').encode(sys.stdout.encoding, 'ignore') def getHTML(url

  • python实现备份目录的方法

    本文实例讲述了python实现备份目录的方法.分享给大家供大家参考.具体如下: 备份脚本1: #!/usr/bin/python # Filename: backup_ver1.py import os import time # 1. The files and directories to be backed up are specified in a list. source = ['/home/swaroop/byte', '/home/swaroop/bin'] # If you ar

  • Python实现新浪博客备份的方法

    本文实例讲述了Python实现新浪博客备份的方法.分享给大家供大家参考,具体如下: Python2.7.2版本实现,推荐在IDE中运行. # -*- coding:UTF-8 -*- # ''' Created on 2011-12-18 @author: Ahan ''' import re import sys import os import time import socket import locale import datetime import codecs from urllib

  • Python实现备份文件实例

    本文实例讲述了Python实现备份文件的方法,是一个非常实用的技巧.分享给大家供大家参考.具体方法如下: 该实例主要实现读取一个任务文件, 根据指定的任务参数自动备份. 任务文件的格式: (注意,分号后面注释是不支持的) [task] ; 一项任务开始 dir=h:/Project ; 指定备份的目录 recusive=1 ; 是否递归子目录 suffix=h|cpp|hpp|c|user|filters|vcxproj|sln|css|gif|html|bmp|png|lib|dsw|dsp|

  • Python实现网站文件的全备份和差异备份

    之前有写利用md5方式来做差异备份,但是这种md5方式来写存在以下问题: •md5sum获取有些软连接的MD5值存在问题 •不支持对空目录进行备份,因为md5sum无法获取空目录的md5值 •权限的修改md5sum无法判断 解决方案: 利用文件的mtime ctime mtime(Modified time)是在写入文件时随文件内容的更改而更改的 ctime(Create time)是在写入文件.更改所有者.权限或链接设置时随Inode的内容更改而更改的 废话不多说直接上代码: #!/usr/b

  • Python备份Mysql脚本

    复制代码 代码如下: #!/usr/bin/python import os  import time  import ftplib  import traceback #config vars  systempathchr="/" #路径分割符,*nix用"/" win32用"\\" dbuser="root" #数据库用户名  dbpwd="dbpwd" #数据库密码  dbnamelist=[&quo

  • Python实现简单的文件传输与MySQL备份的脚本分享

    用python实现简单Server/Client文件传输: 服务器端: #!/usr/bin/python import SocketServer, time class MyServer(SocketServer.BaseRequestHandler): userInfo = { 'leonis' : 'leonis', 'hudeyong' : 'hudeyong', 'mudan' : 'mudan' } def handle(self): print 'Connected from',

  • Windows下简单的Mysql备份BAT脚本分享

    前言 本文介绍的是一个简单的在 Windows 下备份 Mysql 的 BAT 脚本,脚本使用 mysqldump 命令来备份一个指定的 Mysql 数据库到一个文件,文件格式为 %dbname%-yyyyMMddHHmmss.sql,只保留最近60天的备份.如果想定时执行,在 Windows 中添加任务计划即可,具体的可以参考这篇文章. 示例代码如下 @echo off set hour=%time:~0,2% if "%time:~0,1%"==" " set

  • centos中mysql备份数据库脚本分享

    复制代码 代码如下: #!/bin/bash#backup mysql data DBDIR=/data/mysqlBACKDIR=/data/bak/mysqlTIME=`date -d "today" +%F`DB=$(ls -p $DBDIR | grep / |tr -d / | grep -Ev 'information_schema|performance_schema|mysql|test')/etc/init.d/mysqld stopif [ -d $BACKDIR

  • Python实现基于HTTP文件传输实例

    本文实例讲述了Python实现基于HTTP文件传输的方法.分享给大家供大家参考.具体实现方法如下: 一.问题: 因为需要最近看了一下通过POST请求传输文件的内容 并且自己写了Server和Client实现了一个简单的机遇HTTP的文件传输工具 二.实现代码: Server端: 复制代码 代码如下: #coding=utf-8 from BaseHTTPServer import BaseHTTPRequestHandler import cgi class   PostHandler(Base

  • python基于FTP实现文件传输相关功能代码实例

    这篇文章主要介绍了python基于FTP实现文件传输相关功能代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 本实例有文件传输相关功能,包括:文件校验.进度条打印.断点续传 客户端示例: import socket import json import os import hashlib CODE = { '1001':'重新上传文件' } def file_md5(file_path): obj = open(file_path,'rb

  • Python实现简单的文件操作合集

    目录 一.文件操作 1.打开 2.关闭 3.写入 4.读取 二:python中自动开启关闭资源 一.文件操作 1.打开 r+ 打开存在文件 文件不存在 报错 file = open("user.txt","r+") print(file,type(file)) w+ 若是文件不存在 会创建文件 file = open("user.txt","w+") print(file,type(file)) 2.关闭 file.close

  • Python实现博客快速备份的脚本分享

    目录 转存文章到MD 转存图片到本地 鉴于有些小伙伴在寻找博客园迁移到个人博客的方案,本人针对博客园实现了一个自动备份脚本,可以快速将博客园中自己的文章备份成Markdown格式的独立文件,备份后的md文件可以直接放入到hexo博客中,快速生成自己的站点,而不需要自己逐篇文章迁移,提高了备份文章的效率. 首先第一步将博客园主题替换为codinglife默认主题,第二步登录到自己的博客园后台,然后选择博客备份,备份所有的随笔文章,如下所示: 备份出来以后将其命名为backup.xml,然后新建一个

  • 一个简单的MySQL备份Shell脚本

    #!/bin/bash #this is a script of mysql backup if [ ! -d /mydata/data1/backup ] ;then mkdir /mydata/data1/backup fi cd /mydata/data1/backup file=$(find . -type f -mtime -7 | grep .*all.sql) #查找7天内是否有备份的文件 echo $file if [ -z $file ] ;then echo "backup

  • 实现自动上传文件到ftp服务器的BAT脚本分享

    复制代码 代码如下: @Echo Off Echo open ip_address [port] >ftp.up Echo [username]>>ftp.up Echo [password]>>ftp.up Echo Cd .\ >>ftp.up Echo binary>>ftp.up Echo put "C:\ExAdminAuditLog.txt">>ftp.up Echo bye>>ftp.up FT

  • CentOS下mysql定时备份Shell脚本分享

    1.备份语句 复制代码 代码如下: # /usr/local/mysql/bin/mysqldump -utest -ptest test --socket=/tmp/mysql.3306.sock > /usr/local/mysql_backup/3306/test-`date +%Y%m%d`.sql.gz 语句说明:   /usr/local/mysql/bin/mysqldump:MySql安装目录下 -utest:分为两块,一块为-u一块为test:其中-u表示其为用户名,test表

随机推荐