-1

ここで確認できると思うコードに疑問がありました。私の要件は、Apache ログとエラー ログを 2 つの異なるサーバーからコピーすることです。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)

ここで問題があります。Programm は正常に実行されますが、ログが上書きされます。つまり、最初に Appache フォルダーが作成され、ログがコピーされてから、もう一度上書きされます。

私が必要とするのは、フォルダー Appachelogs [定義されたタイムスタンプを使用して] を作成し、マシン 1 からログをコピーし、次にマシン 2 からエラー ログをコピーし、プログラムを続行することです。

これはどのように達成できますか?

4

3 に答える 3

1

scp は、ターゲット コンピューターに同じファイル名が存在する場合、既定で上書きします。

エラー ログに名前を付けるには、エラー ファイル名とタイムスタンプの組み合わせを使用することをお勧めします。ログの名前にタイムスタンプを含めることは常に良い慣例であり、発生している上書きの問題も防ぎます。

于 2012-06-13T07:46:19.630 に答える
0

rsync代わりに使用することを検討してくださいscp

于 2012-06-13T07:50:58.540 に答える
0

両方のマシンでログのファイル名が同じですか? scpそれらがあれば上書きします。

個人的には、マシンごとに 1 つずつ、合計 2 つのディレクトリを作成します。または、Sylar の回答で提案されているように、タイムスタンプを使用します。

于 2012-06-13T07:45:41.653 に答える