婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > 用Python實(shí)現(xiàn)定時(shí)備份Mongodb數(shù)據(jù)并上傳到FTP服務(wù)器

用Python實(shí)現(xiàn)定時(shí)備份Mongodb數(shù)據(jù)并上傳到FTP服務(wù)器

熱門標(biāo)簽:滴滴地圖標(biāo)注公司 杭州房產(chǎn)地圖標(biāo)注 江門智能電話機(jī)器人 天津塘沽區(qū)地圖標(biāo)注 400電話在線如何申請(qǐng) 地圖標(biāo)注可以遠(yuǎn)程操作嗎 甘肅高頻外呼系統(tǒng) 智能電話機(jī)器人調(diào)研 如何申請(qǐng)400電話代理

實(shí)現(xiàn)的功能:在win7下,每天晚上1點(diǎn),自動(dòng)將 F:/data中所有文件進(jìn)行壓縮,以[mongodb+日期]命名,將壓縮好的文件存儲(chǔ)在本地目錄 F:\MongoDbData\,然后將這個(gè)壓縮好的文件上傳到ftp://192.168.0.101/MongoDBup/目錄下

分三步:

第一步:搭建FTP服務(wù)器,配置好FTP環(huán)境。 第二步:用python編寫壓縮文件并實(shí)現(xiàn)FTP上傳的腳本第三步:使用win7自帶的任務(wù)計(jì)劃程序定時(shí)執(zhí)行python腳本

1. 環(huán)境

Python:3.6.1Python IDE:pycharm系統(tǒng):win7

2. 搭建FTP服務(wù)器,配置好FTP環(huán)境

2.1. 啟用FTP和IIS服務(wù)器

 

注意:要全部展開,勾選上。

2.2. 添加FTP服務(wù)器

2.3. 設(shè)置參數(shù)

2.4. 設(shè)置成功,訪問

3. 用python編寫壓縮文件并實(shí)現(xiàn)FTP上傳的腳本

3.1. Import包:

# python3.6.1
import zipfile
import os
import datetime
from ftplib import FTP

3.2. 定義配置信息:

# 定義配置信息
srcFolder = r"F:\Data"       # 被壓縮的源數(shù)據(jù),文件夾形式
desFolder = r'F:\MongoDbData\\'   # 壓縮好的數(shù)據(jù)臨時(shí)存放的位置
ftp_url = "192.168.0.101"      # FTP服務(wù)器地址
ftp_port = 21            # FTP服務(wù)端口號(hào)
ftpUploadFolder = "MongoDBup"    # 壓縮數(shù)據(jù)在FTP服務(wù)器上存放的位置

3.3. 壓縮數(shù)據(jù)源(文件夾):

# 壓縮文件夾
def zipFolder(srcFolder, desFolder, date):
  '''
  :param srcFolder: 被壓縮的源數(shù)據(jù)位置
  :param desFolder: 壓縮之后文件的存放路徑
  :param date: 執(zhí)行壓縮的當(dāng)前時(shí)間,datetime產(chǎn)生(ext:2017-08-16 14:56:40.872613)
  :return: 壓縮文件的路徑
  '''
  startTime = datetime.datetime.now()
  print(f"Enter func zipFolder, time:{startTime}")
  desName = f"{desFolder}mongodb{date.year}{date.month}{date.day}.zip"

  # 檢查是否已經(jīng)壓縮過了
  if os.path.exists(desName):
    endTime = datetime.datetime.now()
    print(f"Already exsist, leave func zipFolder, time:{endTime}, usedTime:{endTime-startTime}")
    return desName

  z = zipfile.ZipFile(desName, 'w', zipfile.ZIP_DEFLATED)
  for dirpath, dirnames, filenames in os.walk(srcFolder):
    print(f"dirpath:{dirpath}, dirnames:{dirnames}, filenames:{filenames}")
    for filename in filenames:
      try:
        # Mongodb在運(yùn)行時(shí),有幾個(gè)關(guān)于lock的文件無法壓縮,為了避免程序終止,忽略這幾個(gè)文件
        z.write(os.path.join(dirpath, filename))
      except Exception as e:
        print(f"except: {e}, cannot zip file: {dirpath}{filename}")
  z.close()
  endTime = datetime.datetime.now()
  print(f"zip done, leave func zipFolder, time:{endTime}, usedTime:{endTime-startTime}")
  return desName

3.4. 文件上傳到FTP服務(wù)器上:

# 上傳文件至FTP服務(wù)器
def ftpUpload(filename, folder, ftp_url, ftp_port):
  '''
  :param filename: 待上傳文件路徑
  :param folder: 文件上傳至FTP服務(wù)器上的存儲(chǔ)目錄
  :param ftp_url: FTP服務(wù)器IP
  :param ftp_port: 端口號(hào),默認(rèn)為21
  :return: status code
  '''
  startTime = datetime.datetime.now()
  print(f"Enter func ftpUpload, time:{startTime}")
  ftp = FTP()
  ftp.set_debuglevel(2)          # set debug level, detail info:2, close:0
  ftp.connect(ftp_url, ftp_port)
  ftp.login('', '')            # 登錄,如果匿名登錄則用空串代替
  print(ftp.getwelcome())         # ext: *welcome* '220 Microsoft FTP Service'
  ftp.cwd(folder)             # Change to a directory on FTP server
  bufsize = 1024             # 設(shè)置緩沖塊大小
  file_handler = open(filename, 'rb')   # 讀模式在本地打開文件
  res = -1
  try:
    # 為了避免程序終止,忽略可能出現(xiàn)的錯(cuò)誤
    res = ftp.storbinary(f"STOR {os.path.basename(filename)}", file_handler, bufsize) # upload file
  except Exception as e:
    print(f"except: {e}, cannot upload file: {ftp_url}:{ftp_port} {filename}")
  finally:
    ftp.set_debuglevel(0)          # 關(guān)閉debug信息
    file_handler.close()
    ftp.quit()
  endTime = datetime.datetime.now()
  print(f"Upload done, leave func ftpUpload, time:{endTime}, usedTime:{endTime-startTime}")
  return res

3.5. 主程序:

# main
backupTime = datetime.datetime.now()
zip_des_name = zipFolder(srcFolder, desFolder, backupTime)
print(zip_des_name)
ftp_res = ftpUpload(zip_des_name, ftpUploadFolder, ftp_url, ftp_port)
print(f"ftp_res: {ftp_res}")

4. 使用win7自帶的任務(wù)計(jì)劃程序定時(shí)執(zhí)行python腳本

位置:開始 ——> 附件 ——> 系統(tǒng)工具 ——> 任務(wù)計(jì)劃程序

不需要時(shí),右鍵——>刪除任務(wù) 即可

5. 效果

5.1. 本地生成的壓縮文件

5.2. 上傳至FTP服務(wù)器的壓縮文件

5.3. 詳細(xì)信息-性能-時(shí)間

日志信息:

源文件data總共8.7G,壓縮后5.3G,壓縮時(shí)間20m,局域網(wǎng)內(nèi)上傳時(shí)間18m。

E:\Miniconda\python.exe E:/PyCharmCode/Justtest/bak.py
Enter func zipFolder, time:2017-08-16 19:48:39.331200
dirpath:F:\Data, dirnames:['diagnostic.data', 'journal'], filenames:['collection-0--394122179086539486.wt', 'collection-102--394122179086539486.wt', 'collection-104--394122179086539486.wt', 'collection-106--394122179086539486.wt', 'collection-108--394122179086539486.wt'], '_mdb_catalog.wt']
except: [Errno 13] Permission denied: 'F:\\Data\\mongod.lock', cannot zip file: F:\Datamongod.lock
except: [Errno 13] Permission denied, cannot zip file: F:\DataWiredTiger.lock
dirpath:F:\Data\diagnostic.data, dirnames:[], filenames:['metrics.2017-08-04T07-04-29Z-00000', 'metrics.2017-08-05T10-47-22Z-00000', 'metrics.2017-08-06T14-52-22Z-00000', 'metrics.2017-08-07T18-17-22Z-00000', 'metrics.2017-08-15T06-09-26Z-00000', 'metrics.2017-08-16T09-51-29Z-00000']
dirpath:F:\Data\journal, dirnames:[], filenames:['WiredTigerLog.0000000247', 'WiredTigerPreplog.0000000006', 'WiredTigerPreplog.0000000007', 'WiredTigerPreplog.0000000008']
zip done, leave func zipFolder, time:2017-08-16 20:08:22.728200, usedTime:0:19:43.397000
F:\MongoDbData\\mongodb2017816.zip
Enter func ftpUpload, time:2017-08-16 20:08:22.728200
*get* '220 Microsoft FTP Service\n'
*resp* '220 Microsoft FTP Service'
*cmd* 'USER anonymous'
*put* 'USER anonymous\r\n'
*get* '331 Anonymous access allowed, send identity (e-mail name) as password.\n'
*resp* '331 Anonymous access allowed, send identity (e-mail name) as password.'
*cmd* 'PASS **********'
*put* 'PASS **********\r\n'
*get* '230 User logged in.\n'
*resp* '230 User logged in.'
*welcome* '220 Microsoft FTP Service'
220 Microsoft FTP Service
*cmd* 'CWD MongoDBup'
*put* 'CWD MongoDBup\r\n'
*get* '250 CWD command successful.\n'
*resp* '250 CWD command successful.'
*cmd* 'TYPE I'
*put* 'TYPE I\r\n'
*get* '200 Type set to I.\n'
*resp* '200 Type set to I.'
*cmd* 'PASV'
*put* 'PASV\r\n'
*get* '227 Entering Passive Mode (192,168,0,101,11,221).\n'
*resp* '227 Entering Passive Mode (192,168,0,101,11,221).'
*cmd* 'STOR mongodb2017816.zip'
*put* 'STOR mongodb2017816.zip\r\n'
*get* '125 Data connection already open; Transfer starting.\n'
*resp* '125 Data connection already open; Transfer starting.'
*get* '226 Transfer complete.\n'
*resp* '226 Transfer complete.'
Upload done, leave func ftpUpload, time:2017-08-16 20:26:20.125200, usedTime:0:17:57.397000
ftp_res: 226 Transfer complete.

6. 注意事項(xiàng)

 6.1. FTP服務(wù)器IP地址變更處理

6.1.1. 第一步,修改FTP服務(wù)器站點(diǎn)配置。

6.1.2. 第二步,修改代碼中FTP登錄IP

ftp.connect("172.16.7.107", 21)

6.1.3. 出錯(cuò)信息 如果只是單純按照6.1.2 修改登錄IP,沒有修改FTP服務(wù)器站點(diǎn)設(shè)置的話,將會(huì)出現(xiàn)如下莫名其妙的錯(cuò)誤:

enter ftpUpload
*get* ''
Traceback (most recent call last):
 File "AutoBackupMongoTest.py", line 64, in module>
  ftp_res = ftpUpload(zip_des_name, ftpUploadFolder)
 File "AutoBackupMongoTest.py", line 42, in ftpUpload
  ftp.connect('172.16.7.107', 21)
 File "E:\Miniconda\lib\ftplib.py", line 155, in connect
  self.welcome = self.getresp()
 File "E:\Miniconda\lib\ftplib.py", line 234, in getresp
  resp = self.getmultiline()
 File "E:\Miniconda\lib\ftplib.py", line 220, in getmultiline
  line = self.getline()
 File "E:\Miniconda\lib\ftplib.py", line 208, in getline
  raise EOFError
EOFError

或者是如下錯(cuò)誤:

enter ftpUpload
Traceback (most recent call last):
 File "AutoBackupMongoTest.py", line 63, in module>
  ftp_res = ftpUpload(zip_des_name, ftpUploadFolder)
 File "AutoBackupMongoTest.py", line 41, in ftpUpload
  ftp.connect("192.168.0.101", 21)
 File "E:\Miniconda\lib\ftplib.py", line 152, in connect
  source_address=self.source_address)
 File "E:\Miniconda\lib\socket.py", line 722, in create_connection
  raise err
 File "E:\Miniconda\lib\socket.py", line 713, in create_connection
  sock.connect(sa)
TimeoutError: [WinError 10060] 由于連接方在一段時(shí)間后沒有正確答復(fù)或連接的主機(jī)沒
有反應(yīng),連接嘗試失敗。

到此這篇關(guān)于用Python實(shí)現(xiàn)定時(shí)備份Mongodb數(shù)據(jù)并上傳到FTP服務(wù)器的文章就介紹到這了,更多相關(guān)Python 定時(shí)備份Mongodb內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • MongoDB安裝使用并實(shí)現(xiàn)Python操作數(shù)據(jù)庫
  • 使用python向MongoDB插入時(shí)間字段的操作
  • 如何用python 操作MongoDB數(shù)據(jù)庫
  • python連接mongodb數(shù)據(jù)庫操作數(shù)據(jù)示例
  • python爬蟲用mongodb的理由
  • python爬蟲數(shù)據(jù)保存到mongoDB的實(shí)例方法
  • Python MongoDB 插入數(shù)據(jù)時(shí)已存在則不執(zhí)行,不存在則插入的解決方法
  • Python操作Mongodb數(shù)據(jù)庫的方法小結(jié)
  • Python 操作 MongoDB 講解詳細(xì)

標(biāo)簽:東莞 長春 臨汾 漢中 河池 廊坊 德宏 重慶

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《用Python實(shí)現(xiàn)定時(shí)備份Mongodb數(shù)據(jù)并上傳到FTP服務(wù)器》,本文關(guān)鍵詞  用,Python,實(shí)現(xiàn),定時(shí),備份,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《用Python實(shí)現(xiàn)定時(shí)備份Mongodb數(shù)據(jù)并上傳到FTP服務(wù)器》相關(guān)的同類信息!
  • 本頁收集關(guān)于用Python實(shí)現(xiàn)定時(shí)備份Mongodb數(shù)據(jù)并上傳到FTP服務(wù)器的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    精品午夜久久福利影院| 粉嫩一区二区三区在线看| 国产三级一区二区| 亚洲国产精品ⅴa在线观看| 国产精品伦一区二区三级视频| 中文字幕一区在线观看视频| 一区二区三区色| 日本sm残虐另类| 国产 欧美在线| 欧美色图免费看| 国产午夜亚洲精品不卡| 亚洲尤物在线视频观看| 国产在线观看一区二区| 欧美系列亚洲系列| 久久久亚洲高清| 亚洲成av人片一区二区| 国产91对白在线观看九色| 欧美老年两性高潮| 亚洲色图色小说| 国产真实乱子伦精品视频| 色综合一个色综合| 亚洲精品在线网站| 亚洲第一搞黄网站| 91在线免费播放| 久久精品一区二区三区不卡牛牛| 天天色天天爱天天射综合| av毛片久久久久**hd| 久久久高清一区二区三区| 天天色天天操综合| 欧美亚洲日本国产| 自拍偷拍亚洲激情| 国产白丝精品91爽爽久久 | 日韩欧美国产不卡| 亚洲乱码国产乱码精品精可以看 | 51久久夜色精品国产麻豆| 中文字幕免费不卡在线| 久久99热狠狠色一区二区| 精品国产污网站| 一二三区精品视频| 91免费视频网| 中文字幕乱码亚洲精品一区| 经典三级在线一区| 日韩女同互慰一区二区| 日韩成人午夜精品| 欧美日韩久久一区二区| 洋洋成人永久网站入口| 在线一区二区观看| 亚洲一二三四在线| 日本乱人伦aⅴ精品| 国产精品久久久久影院亚瑟| 成人妖精视频yjsp地址| 中文字幕成人网| 国产91精品入口| 国产欧美日韩不卡免费| 精品亚洲成a人| 欧美一级在线视频| 性久久久久久久久久久久| 91成人国产精品| 亚洲国产综合色| 欧美日韩亚洲综合一区二区三区| 亚洲免费在线电影| 欧日韩精品视频| 综合久久给合久久狠狠狠97色| 91女人视频在线观看| 一个色妞综合视频在线观看| 欧美专区亚洲专区| 亚洲成人av一区二区三区| 欧美日韩久久久| 美女视频黄 久久| 欧美一级电影网站| 国产乱淫av一区二区三区| 欧美国产日韩亚洲一区| 国产麻豆精品一区二区| 精品福利在线导航| 成人av在线资源网| 樱桃国产成人精品视频| 欧美色视频在线观看| 美女视频第一区二区三区免费观看网站| 91精品国产91热久久久做人人| 经典一区二区三区| 国产精品电影院| 欧美日本一道本在线视频| 国产一区视频在线看| 亚洲欧洲中文日韩久久av乱码| 欧美精品 日韩| 国产成人在线看| 一二三区精品视频| 2017欧美狠狠色| 日本韩国欧美在线| 韩国精品免费视频| 亚洲一区精品在线| 精品日韩在线观看| 色综合久久久久| 激情综合色综合久久| 一二三四社区欧美黄| 久久久91精品国产一区二区精品 | 国产一区免费电影| 亚洲男人天堂一区| 久久综合色天天久久综合图片| 色婷婷综合视频在线观看| 极品销魂美女一区二区三区| 国产综合久久久久久鬼色| 国产精品女主播在线观看| 正在播放亚洲一区| 色欧美片视频在线观看在线视频| 国内精品不卡在线| 日本欧美肥老太交大片| 日韩理论片一区二区| 久久亚洲免费视频| 欧美日本不卡视频| 日本精品裸体写真集在线观看| 国产精品一区在线观看你懂的| 日本三级韩国三级欧美三级| 一区二区三区在线观看国产 | 国产成人免费视频| 石原莉奈在线亚洲三区| 亚洲精品国产一区二区精华液 | 亚洲一区二区三区四区在线 | 自拍偷拍欧美激情| 久久精品免视看| 日韩欧美专区在线| 欧美伦理影视网| 色吧成人激情小说| 99精品一区二区三区| 东方欧美亚洲色图在线| 国产一区91精品张津瑜| 免费视频一区二区| 日韩精品电影在线观看| 午夜影视日本亚洲欧洲精品| 亚洲欧美色图小说| 亚洲视频一区二区免费在线观看| 国产精品无圣光一区二区| 久久精品欧美日韩| 国产香蕉久久精品综合网| 久久人人超碰精品| 国产午夜三级一区二区三| 久久影院视频免费| 久久久久亚洲综合| 久久久久久久电影| 日本一区二区在线不卡| 久久久久久久综合狠狠综合| 久久日韩精品一区二区五区| 欧美大黄免费观看| 欧美精品一区二区精品网| 欧美大片免费久久精品三p| 欧美大片在线观看一区| 国产亚洲成aⅴ人片在线观看| 2020国产精品| 国产欧美一区二区精品性色超碰 | 黑人巨大精品欧美黑白配亚洲| 免费av网站大全久久| 国产精品资源在线| aa级大片欧美| 欧美无砖砖区免费| 51精品久久久久久久蜜臀| 精品日韩在线观看| 国产精品久久99| 亚洲国产一区二区三区| 麻豆一区二区在线| 成人免费观看视频| 欧美在线啊v一区| 日韩欧美中文字幕一区| 中国色在线观看另类| 亚洲一区二三区| 麻豆91在线看| 成人黄色小视频在线观看| 欧美在线综合视频| 欧美变态凌虐bdsm| 国产精品第四页| 丝瓜av网站精品一区二区| 国产夫妻精品视频| 欧美色图在线观看| 久久亚洲综合av| 亚洲午夜精品网| 国产制服丝袜一区| 色婷婷一区二区三区四区| 日韩欧美激情一区| 综合久久综合久久| 老司机精品视频线观看86| 成人网男人的天堂| 91精品国产美女浴室洗澡无遮挡| 国产视频一区在线播放| 亚洲男人的天堂一区二区| 狠狠色狠狠色综合系列| 色噜噜久久综合| 亚洲第一av色| 国产精品综合在线视频| 欧美综合在线视频| 中国色在线观看另类| 免费视频一区二区| 日本乱码高清不卡字幕| 国产欧美一区二区精品性| 日韩精品一级二级| 日本韩国一区二区三区| 国产欧美综合在线观看第十页| 午夜激情一区二区三区| 91偷拍与自偷拍精品| 久久久久免费观看| 老司机免费视频一区二区三区| 欧美日韩一区三区四区|