最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python+rsync精確同步指定格式文件

 更新時(shí)間:2019年08月29日 10:34:07   作者:gcogle  
這篇文章主要為大家詳細(xì)介紹了python+rsync精確同步指定格式文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了python+rsync精確同步指定格式文件的具體代碼,供大家參考,具體內(nèi)容如下

# coding: utf-8
#!/usr/bin/env python
'''
updatedb更新本地服務(wù)器指定目錄/home/upload/de locate.dbz數(shù)據(jù)庫(kù)
然后locate命令正則查找符合條件的文件并將文件名輸出到locate.src
通過paramiko模塊得到遠(yuǎn)程服務(wù)器符合條件的文件并將文件名輸出到locate.dst
比較這兩個(gè)文件得到locate.diff,最好rsync命令同步locate.diff列表中的文件
到遠(yuǎn)程服務(wù)器
'''
import paramiko
import commands
import os
import logging
logging.basicConfig(level=logging.DEBUG,
          format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
          datefmt='%Y-%m-%d %H:%M:%S',
          filename='/var/log/upload_to_chengdu.log',
          filemode='a')
logging.info("###################################################################")
hostname = '8.8.8.8'
username = 'username'
password = 'password'
port = 22
locate_lists = ['/tmp/locate.src', '/tmp/locate.dst', '/tmp/locate.diff']
dict_path = {'locate_lists': locate_lists, 'dst_db': '/tmp/locate.db',
       'src_db': '/tmp/locate.db', 'dst_path': '/logs/rsync_log/',
       'src_path': '/home/upload/', 'passwd_file': '/etc/rsync.pas'}
def check_file():
  for l in dict_path['locate_lists']:
    if os.path.exists(l):
      commands.getstatusoutput('sudo rm %s' % l)
def get_dst_list():
  s = paramiko.SSHClient()
  s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  s.connect(hostname=hostname, port=port, username=username, password=password)
  cmd_create = "sudo updatedb -U %s -o %s && sudo locate -d %s --regex '.*[0-9]{4}([-]{0,1}[0-9]{2}){2}\..*gz$' >>%s" % (
    dict_path['dst_path'], dict_path['dst_db'], dict_path['dst_db'], dict_path['locate_lists'][1])
  cmd_delete = 'sudo rm ' + dict_path['locate_lists'][1]
  stdin, stdout, stderr = s.exec_command(cmd_create)
  # print stdout.read()
  try:
    t = paramiko.Transport((hostname, port))
    t.connect(username=username, password=password)
    sftp = paramiko.SFTPClient.from_transport(t)
    sftp.get(dict_path['locate_lists'][1], dict_path['locate_lists'][1])
    t.close()
  except Exception, e:
    print e
  stdin, stdout, stderr = s.exec_command(cmd_delete)
  s.close()
def get_src_list():
  cmd = "sudo updatedb -U %s -o %s && sudo locate -d %s --regex '.*[0-9]{4}([-]{0,1}[0-9]{2}){2}\..*gz$' >>%s" % (
    dict_path['src_path'], dict_path['src_db'], dict_path['src_db'], dict_path['locate_lists'][0])
  commands.getstatusoutput(cmd)
def cmp_diff():
  f1 = open(dict_path['locate_lists'][0], 'r')
  f2 = open(dict_path['locate_lists'][1], 'r')
  f3 = open(dict_path['locate_lists'][2], 'a')
  x = f1.readlines()
  y = f2.readlines()
  f1.close()
  f2.close()
  for i in x:
    j = dict_path['dst_path'] + i[13:]
    if j not in y:
      f3.writelines(i)
  f3.close()
def rsync_file():
  f = open(dict_path['locate_lists'][2], 'r')
  for i in f.readlines():
    cmd = 'cd %s && sudo rsync -Rvz %s upload@%s::aliyun_log --password-file=%s' % (
      dict_path['src_path'], i.strip('\n')[13:], hostname, dict_path['passwd_file'])
    logging.info(cmd)
    commands.getstatusoutput(cmd)
  f.close()
def del_locate_file():
  cmd = 'sudo rm {%s,%s,%s}' % (dict_path['locate_lists'][1], dict_path['locate_lists'][0], dict_path['locate_lists'][2])
  commands.getstatusoutput(cmd)
if __name__ == '__main__':
  check_file()
  get_dst_list()
  get_src_list()
  cmp_diff()
  rsync_file()
  del_locate_file()

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Pandas數(shù)據(jù)結(jié)構(gòu)詳細(xì)說明及如何創(chuàng)建Series,DataFrame對(duì)象方法

    Pandas數(shù)據(jù)結(jié)構(gòu)詳細(xì)說明及如何創(chuàng)建Series,DataFrame對(duì)象方法

    本篇文章中,我們主要側(cè)重于介紹Pandas數(shù)據(jù)結(jié)構(gòu)本身的特性,以及如何創(chuàng)建一個(gè)Series或者DataFrame數(shù)據(jù)對(duì)象,并填入一些數(shù)據(jù)
    2021-10-10
  • Python實(shí)戰(zhàn)使用XPath采集數(shù)據(jù)示例解析

    Python實(shí)戰(zhàn)使用XPath采集數(shù)據(jù)示例解析

    這篇文章主要為大家介紹了Python實(shí)戰(zhàn)之使用XPath采集數(shù)據(jù)實(shí)現(xiàn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>
    2023-04-04
  • Python實(shí)現(xiàn)新浪博客備份的方法

    Python實(shí)現(xiàn)新浪博客備份的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)新浪博客備份的方法,涉及Python正則操作,字符串操作及文本操作的相關(guān)技巧,需要的朋友可以參考下
    2016-04-04
  • python排序算法之選擇排序

    python排序算法之選擇排序

    這篇文章主要介紹了python排序算法之選擇排序,選擇排序表示從無序的數(shù)組中,每次選擇最小或最大的數(shù)據(jù),從無序數(shù)組中放到有序數(shù)組的末尾,以達(dá)到排序的效果,需要的朋友可以參考下
    2023-04-04
  • Python中Pygame模塊的詳細(xì)安裝過程

    Python中Pygame模塊的詳細(xì)安裝過程

    pygame安裝是為了開發(fā)小游戲,在下新手在經(jīng)過許多嘗試后,為大家避雷,給大家分享一個(gè)簡(jiǎn)單有效的方法,下面這篇文章主要給大家介紹了關(guān)于Python中Pygame的詳細(xì)安裝過程的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • Python機(jī)器學(xué)習(xí)之決策樹算法實(shí)例詳解

    Python機(jī)器學(xué)習(xí)之決策樹算法實(shí)例詳解

    這篇文章主要介紹了Python機(jī)器學(xué)習(xí)之決策樹算法,較為詳細(xì)的分析了實(shí)例詳解機(jī)器學(xué)習(xí)中決策樹算法的概念、原理及相關(guān)Python實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-12-12
  • 基于python實(shí)現(xiàn)刪除指定文件類型

    基于python實(shí)現(xiàn)刪除指定文件類型

    這篇文章主要介紹了基于python實(shí)現(xiàn)刪除指定文件類型,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 探索Python列表合并技術(shù)提高代碼靈活性

    探索Python列表合并技術(shù)提高代碼靈活性

    本文將深入研究Python中列表合并的幾種方法,通過詳細(xì)的示例代碼和細(xì)致的解釋,呈現(xiàn)一場(chǎng)關(guān)于列表操作的精彩探險(xiǎn),無論是初學(xué)者還是有經(jīng)驗(yàn)的開發(fā)者,通過學(xué)習(xí)本文,將更加熟練地運(yùn)用這些方法,提升代碼的效率和可讀性
    2024-01-01
  • Python中的日期時(shí)間處理詳解

    Python中的日期時(shí)間處理詳解

    Python程序能用很多方式處理日期和時(shí)間。轉(zhuǎn)換日期格式是一個(gè)常見的例行瑣事,這篇文章主要介紹了Python中的日期時(shí)間處理的幾種方式的區(qū)別和聯(lián)系,需要的朋友可以參考下
    2016-11-11
  • Python 腳本死鎖問題與解決方案

    Python 腳本死鎖問題與解決方案

    在腳本中,可以創(chuàng)建一個(gè)隊(duì)列來存儲(chǔ)子進(jìn)程的輸出,然后由主進(jìn)程從隊(duì)列中讀取輸出并進(jìn)行處理,這篇文章主要介紹了Python 腳本死鎖問題與解決方案,需要的朋友可以參考下
    2024-06-06

最新評(píng)論

石泉县| 剑川县| 平度市| 景洪市| 汝州市| 屏南县| 隆子县| 都江堰市| 昌图县| 辽宁省| 梨树县| 遂宁市| 恩施市| 突泉县| 蒙城县| 宁明县| 屏南县| 美姑县| 延吉市| 阳高县| 孟津县| 五大连池市| 马龙县| 宝清县| 宁远县| 延安市| 仲巴县| 介休市| 崇阳县| 剑阁县| 全州县| 彭阳县| 呼玛县| 康保县| 安远县| 南平市| 从江县| 丰城市| 秀山| 东平县| 同心县|