输入问题关键词
linux 自动备份数据库
时间:2017-05-26 10:51:17

定期备份

01 01 * * *  /home/rsync/backup.sh


#!/bin/bash

$HOME/.bash_profile
DIR2=/usr/backup
MYSQL_DUMP=/usr/local/mysql/mysql5.5/bin/mysqldump
USER_NAME=backup
PASSWORD=bjFw~quqxx_lym_rT4L@Hf5
HOST=192.168.0.71
# mysql
file_name="faq_`date -I`"
file_name2="emall_`date -I`"
file_name3="share_`date -I`"
file_name4="discuz_`date -I`"
$MYSQL_DUMP -u$USER_NAME -p$PASSWORD -h $HOST  --quick  faq  > $DIR2/$file_name

#/bin/gzip $DIR2/$file_name


$MYSQL_DUMP -u$USER_NAME -p$PASSWORD -h $HOST  --quick emall --ignore-table=emall.t_hash > $DIR2/$file_name2

#/bin/gzip $DIR2/$file_name2

$MYSQL_DUMP -u$USER_NAME -p$PASSWORD -h $HOST  --quick share > $DIR2/$file_name3

#/bin/gzip $DIR2/$file_name3

$MYSQL_DUMP -u$USER_NAME -p$PASSWORD -h $HOST  --quick discuz > $DIR2/$file_name4

#/bin/gzip $DIR2/$file_name4

/bin/gzip -f $DIR2/*"_`date -I`"


定期删除

01 04 * * *  /home/rsync/rm_backup.sh

#!/bin/bash
$HOME/.bash_profile
DIR2=/usr/backup

python /home/rsync/rmfile.py $DIR2 discuz
python /home/rsync/rmfile.py $DIR2 emall
python /home/rsync/rmfile.py $DIR2 faq
python /home/rsync/rmfile.py $DIR2 share


//PYTHON 文件代码
import os,datetime,sys

class myFile:
    fileName = ''
    fileDate = 0
    def __init__(self,n,d):
        self.fileName = n
        self.fileDate = d


def getSpareFlis(fileList):
    litte = 0;
    i = 0;
    for f in fileList:
        if(f.fileDate < fileList[litte].fileDate):
            litte = i
        i+=1
    del fileList[litte]
    return fileList

class weekFile:
    week = ""
    fileList = []

    def __getWeek__(self, file):
        s = datetime.datetime.fromtimestamp(file.fileDate).isocalendar()
        return str(s[0])+"_"+str(s[1])

    def __init__(self, file):
        self.week = self.__getWeek__(file)
        self.fileList = []
        self.fileList.append(file)

    def addFile(self , file):
        if(self.week == self.__getWeek__(file)):
            self.fileList.append(file)
            return True
        else:
            return False

class monthFile:
    month = ""
    fileList = []
    def __getMonth__(self, file):
        d = datetime.datetime.fromtimestamp(file.fileDate)
        return str(d.year)+"_"+str(d.month)
    def __init__(self, file):
        self.month = self.__getMonth__(file)
        self.fileList = []
        self.fileList.append(file)
    def addFile(self , file):
        if(self.month == self.__getMonth__(file)):
            self.fileList.append(file)
            return True
        else:
            return False

def getNeedDeleteFiles(files):
    monthList = []
    weekList = []
    today = datetime.datetime.now()
    for f in files:
        if((today - datetime.datetime.fromtimestamp(f.fileDate)).days > 90):
            isadd = False
            for m in monthList:
                if(m.addFile(f)):
                    isadd = True
                    break
            if(not isadd):
                monthList.append(monthFile(f))



        elif((today-datetime.datetime.fromtimestamp(f.fileDate)).days > 20):
            isadd = False
            for w in weekList:
                if(w.addFile(f)):
                    isadd = True
                    break
            if(not isadd):
                weekList.append(weekFile(f))


    needDeleteFiles = []
    for m in monthList:
        needDeleteFiles.extend(getSpareFlis(m.fileList))
    for w in weekList:
        needDeleteFiles.extend(getSpareFlis(w.fileList))
    return needDeleteFiles

def getPathFiles(path, namePart):
    fileList = []
    files = os.listdir(path)
    for f in files:
        fullPath = os.path.join(path, f)
        if(os.path.isfile(fullPath)):
            if(None == namePart or namePart == '' or f.find(namePart) >= 0):
                fileList.append(myFile(fullPath, os.path.getmtime(fullPath)))
    return fileList


if(len(sys.argv) < 2):
    print("please input path")
    exit(1)
path = sys.argv[1]
if(len(sys.argv) < 3):
    print("please input file name like")
    exit(1)
fileStr = sys.argv[2]
if(not os.path.isdir(path)):
    print(path+ " is not dir")
    exit(1)
print("path="+path+" findName="+fileStr)
filelist = getPathFiles(path, fileStr)
filelist = getNeedDeleteFiles(filelist)
for f in filelist:
    print("delete file " + f.fileName)
    os.remove(f.fileName)
print("ok")
exit(0)



  • Copyright © © 2014-2024 magetz.com 版权所有
  • 公安备案 粤ICP备16040249号
  • E-mail: lym@magetz.com