我对我的代码有疑问,我想我可以在这里验证。我的要求是从两个不同的服务器复制 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)
我这里有一个问题.Programm成功执行,但日志被覆盖,我的意思是首先创建Appache文件夹,复制日志,然后再次被覆盖。
我需要的是:创建一个文件夹Appachelogs[时间戳定义],从机器1复制日志,然后从机器2复制错误日志,然后继续程序
如何实现这一点?
如果目标计算机中存在相同的文件名,则 scp 会覆盖。
我建议使用错误文件名+时间戳的组合来命名错误日志。日志的名称中包含时间戳始终是一个很好的约定,它们还可以防止您遇到的覆盖问题。
考虑使用 rsync
而不是 scp
您的日志在两台计算机上的文件名是否相同? 如果他们这样做,scp
将覆盖它们。
就个人而言,我将有两个目录,每台机器一个。或者按照 Sylar 在他的回答中建议的那样使用时间戳。