Копирование журналов в python с помощью функции командной строки

Я сомневался в своем коде, который, я думаю, могу проверить здесь. Мое требование состоит в том, чтобы скопировать журнал ошибок и ошибок apache с двух разных серверов. Iv записал программу python, используя цикл for.

Мой код:

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 " + "[email protected]:" + 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 " + "[email protected]:" + 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 [с отметкой времени, как определено], скопируйте журналы с одного компьютера, следующие журналы ошибок копирования из machine2 и продолжите программу

Как это можно достичь?

Ответ 1

scp по умолчанию перезаписывает, если на целевом компьютере существует одно имя файла.

Я бы предложил использовать комбинацию имени файла ошибки + метку времени для именования журналов ошибок. Это всегда хорошее соглашение для журналов, чтобы иметь временную метку в названии, и они также предотвращают проблему перезаписи, которую вы испытываете.

Ответ 2

У ваших журналов одинаковые имена файлов на обеих машинах? scp будут перезаписывать их, если они это сделают.

Лично у меня было бы два каталога, по одному для каждой машины. Или используйте временную метку, предложенную Силаром в его ответе.

Ответ 3

Используйте rsync вместо scp