-1

我对我的代码有疑问,我想我可以在这里验证。我的要求是从两个不同的服务器复制 apache 日志和错误日志。Iv 使用 for 循环编写了一个 python 程序。

我的代码:

def copylogs(Appache,Errorlog, folder_prefix) :

    root_path = '/home/tza/Desktop/LOGS/'
    folders = ['Appache','Errorlog']
    for folder in folders:


      folder_name = folder_prefix + "_" + folder + str(int(time.time()))
      mkdircmd = "mkdir -p " + root_path + "/" + folder_name
      os.system(mkdircmd)

      filePath = root_path + folder_name
      serverPath = "/var/log/apache/*"

      cmd = "scp " + "symentic@60.62.1.164:" + serverPath + " " + filePath
      cmd = cmd.replace("60.62.1.164" ,myip1)
      cmd = os.system(cmd)
      print "Logs are at:",root_path+folder_name
      time.sleep(10)

      filePath = root_path +  folder
      serverPath = "/var/log/errorlog/*"

      cmd = "scp " + "symentic@10.95.21.129:" + serverPath + " " + filePath
      cmd = cmd.replace("10.95.21.129" ,myip2)
      cmd = os.system(cmd)
      print "Logs are at:",root_path+folder_name

现在我在程序结束时调用该函数:

folder_prefix = "Fail Case-1"
copylogs(Appache,Errorlog, folder_prefix)

我这里有个问题。程序成功执行,但日志被覆盖。我的意思是首先创建 Appache 文件夹,复制日志,然后再次被覆盖。

我需要的是:创建一个文件夹 Appachelogs [使用定义的时间戳],从机器 1 复制日志,然后从机器 2 复制错误日志,然后继续程序

如何做到这一点?

4

3 回答 3

1

如果目标计算机中存在相同的文件名,scp 默认会覆盖。

我建议使用错误文件名 + 时间戳的组合来命名错误日志。日志名称中带有时间戳始终是一个很好的约定,它们还可以防止您遇到的覆盖问题。

于 2012-06-13T07:46:19.630 回答
0

您的日志在两台机器上是否具有相同的文件名?scp如果他们这样做,将覆盖它们。

我个人会有两个目录,每台机器一个。或者使用 Sylar 在他的回答中建议的时间戳。

于 2012-06-13T07:45:41.653 回答
0

考虑使用rsync而不是scp

于 2012-06-13T07:50:58.540 回答