zoukankan      html  css  js  c++  java
  • php服务器版本更新工具up2server

    为什么要做这个工具

      之前做php 开发的时候,每次版本更新,要把修改的文件同步到服务器,都要小心翼翼,如果漏掉了文件,那就完蛋了,KPI,奖金什么的都没了。

    所以写了这个工具。代码在github   https://github.com/foxswang/up2server

    1. 复制 获取要上传的文件 运行

     python get_upload_file.py 
    

      get_upload_file.py的代码如下:

    #!/usr/bin/python
    import os 
    import os.path 
    import shutil 
    import time,  datetime
    import string 
    
    fromdir = "source_folder"
    todir = "backup"
    filename = 'filelist.txt'
    
    #
    def cpFile(srcPath, destPath):  
        shutil.copy(srcPath,destPath)
        #shutil.copytree(srcPath,destPath) 
    #  
    def copyFiles(sourceDir,  targetDir): 
        if sourceDir.find(".svn") > 0: 
            return 
        for file in os.listdir(sourceDir): 
            sourceFile = os.path.join(sourceDir,  file) 
            targetFile = os.path.join(targetDir,  file) 
            if os.path.isfile(sourceFile): 
                if not os.path.exists(targetDir):  
                    os.makedirs(targetDir)  
                if not os.path.exists(targetFile) or(os.path.exists(targetFile) and (os.path.getsize(targetFile) != os.path.getsize(sourceFile))):  
                        open(targetFile, "wb").write(open(sourceFile, "rb").read()) 
            if os.path.isdir(sourceFile): 
                First_Directory = False 
                copyFiles(sourceFile, targetFile)
    #            
    if  __name__ == "__main__":
        text_file = open("./"+filename ,"r")
        #current_path = os.getcwd() 
        current_path = os.getcwd() 
        all_line = 0
        folder_count = 0;
        print("current_path "+ current_path )
        if not os.path.exists(os.path.join(current_path, todir) ):  
                    os.makedirs(os.path.join(current_path, todir) )  
        for line in text_file:
           line=line.strip('
    ')
           srcFile = current_path + line
           dstFile = current_path + '/' + todir + line
           targetDir = os.path.dirname(dstFile)
           if not os.path.isfile(srcFile): 
              folder_count = folder_count+1
              continue;
           print (srcFile)
           print (dstFile)
           if not os.path.exists(targetDir):  
                  os.makedirs(targetDir)  
           print("cp "+ srcFile +" to " + dstFile)
           cpFile(srcFile,dstFile)
           all_line  = all_line + 1
           
        print ("copy success  file : %d folder: %d" % (all_line,folder_count))
      
        
    

      

    2. 备份服务器的文件,方便升级失败后进行恢复:

    python backup_server_files.py

     

    3. 将第一步复制的文件,上传到服务器

      服务器版本升级so easy

    文件和一些参数说明

    1. 确保系统安装了python(windows 和linux 都支持)

    2 .get_upload_files.py

      获取需要上传到服务器上的文件列表,并保存到指定的文件夹

         源文件的目录

       fromdir = "source_folder"
    

         根据filelist.txt 复制的文件存储目录

      todir = "backup"
    

         需要上传服务器的文件列表

      filename = 'filelist.txt'
    

    3.backup_server_files.py

          备份目录文件

      todir = "backup"
    

         需要备份的文件列表

     filename = 'filelist.txt'
    
         服务器的代码路径,记住最后的 / 需要保留
     SRC_FOLDER = ‘/path_to_server_src_folder/‘
    

    4.filelist.txt 这个文件存储需要上传的文件

        git如何获取需要上传的文件
      git diff --name-status HEAD~2 HEAD~3
      git diff  
      git diff b45ba47d1b297217e3ec6a3ab0f61716a8d6ecbc c244d0bf06d56ec86aaedeefa5dcd84dd9febc60
        一般来说,通过 hash 串的前 4~6 位就可以区分,所示可以简写为:
      git diff b45b 355e
    

      

    git diff这个命令能比较两个提交之间的差异,使用–name-only参数可以只显示文件名。例如:
    
    $ git diff 608e120 4abe32e --name-only
     
  • 相关阅读:
    软件测试的14种类型
    解决:Failure to transfer org.apache.maven.plugins:maven-jar-plugin:pom:2.4 from错误
    Docker 自建私有Registry 私有仓库
    VMware vCenter Server 6 Standard
    获取Zabbix 中资源的使用率
    数据库锁表备份及主从复制
    12-kubernetes Dashboard 认证及分级授权
    11-kubernetes RBAC 及授权
    10-kubernetes serveraccount RBAC
    09-kubernetes StatefulSet
  • 原文地址:https://www.cnblogs.com/likwo/p/4805948.html
Copyright © 2011-2022 走看看