Forum: PC Hard- und Software rails & nginx logfiles täglich backupen


von D. I. (Gast)


Lesenswert?

Ich möchte gerne die Logfiles, die durch nginx (access.log, error.log) 
und rails (production.log) generiert werden täglich wegschieben und 
neuschreiben lassen.

Dafür habe ich folgendes Skript geschrieben, welches täglich durch cron 
ausgeführt wird:
1
#!/usr/bin/env ruby
2
3
require 'fileutils'
4
require 'date'
5
include FileUtils
6
7
cd '/var/backup'
8
mkdir_p 'mein_projekt'
9
cd 'mein_projekt'
10
11
date_dir = Date.today.strftime( "%Y/%m/%d" )
12
mkdir_p date_dir
13
cd date_dir
14
15
cp '/var/www/mein_projekt/shared/log/production.log', '.'
16
File.truncate( '/var/www/mein_projekt/shared/log/production.log', 0 )
17
18
cp '/var/log/www/mein_projekt/access.log', '.'
19
File.truncate( '/var/log/www/mein_projekt/access.log', 0 )
20
21
cp '/var/log/www/mein_projekt/error.log', '.'
22
File.truncate( '/var/log/www/mein_projekt/error.log', 0 )
23
24
%x( kill -USR1 $( cat /run/nginx.pid ) )
25
touch '/var/www/mein_projekt/current/tmp/restart.txt'
26
chown 'mein_deploy_user', 'mein_deploy_user', '/var/www/mein_projekt/current/tmp/restart.txt'

Ziel ist es, dies möglichst unterbrechungsfrei zu machen.
Das Skript wird als root ausgeführt, um die Berechtigungen der Dateien 
beizubehalten kopiere und truncate ich die Dateien.
Nachdem das gemacht wurde starte ich die Prozesse neu damit die logfiles 
neu aufgemacht werden und nach dem truncaten nicht bei der alten Größe 
weitermachen.
Ist dies das korrekte Vorgehen?

von Konrad S. (maybee)


Lesenswert?


von tmomas (Gast)


Lesenswert?

Generelle Lösung für sowas: logrotate

http://linux.die.net/man/8/logrotate

von Dirk D. (dicky_d)


Lesenswert?

tmomas schrieb:
> Generelle Lösung für sowas: logrotate
>
> http://linux.die.net/man/8/logrotate

+1 für logrotate, das ist genau dafür da.
Wenn du nginx mit über deine Distribution beziehst ist die 
wahrscheinlichkeit groß das dafür schon logrotate (ggf. nicht täglich, 
aber das kann man anpassen) eingerichtet ist.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.