[gelöst] Skript als User postgres automatisch täglich ausführen
[gelöst] Skript als User postgres automatisch täglich ausführen
Guten Tag,
habe ein Skript, das ein Backup einer Postgres Datenbank macht.
Damit es funktioniert muss man es als User postgres starten.
Kann ich das per Timer Unit machen? Und falls ja wie?
Gruß Christian
habe ein Skript, das ein Backup einer Postgres Datenbank macht.
Damit es funktioniert muss man es als User postgres starten.
Kann ich das per Timer Unit machen? Und falls ja wie?
Gruß Christian
Zuletzt geändert von homer65 am 04.10.2023 10:05:12, insgesamt 1-mal geändert.
- whisper
- Beiträge: 3379
- Registriert: 23.09.2002 14:32:21
- Lizenz eigener Beiträge: GNU Free Documentation License
-
Kontaktdaten:
Re: Skript als User postgres automatisch täglich ausführen
Alter ist übrigens keine Ausrede, nur Erfahrung, die sich stapelt.
Re: Skript als User postgres automatisch täglich ausführen
Danke für den Hinweis. Wie funktioniert es denn? Also in die ROOT Crontab eintragen. Und dann? Was sichert es wohin?
Gruß Christian
Gruß Christian
Re: Skript als User postgres automatisch täglich ausführen
timer-unit oder mit einer crontab (usereigen oder die systemweite).homer65 hat geschrieben:03.10.2023 13:30:07habe ein Skript, das ein Backup einer Postgres Datenbank macht.
Damit es funktioniert muss man es als User postgres starten.
Code: Alles auswählen
@daily postgres </pfad/zum/script> > /dev/null 2>&1
# - - - -
Debian 12.8 mit LXDE, OpenBSD 7.6 mit i3wm, FreeBSD 14.1 mit Xfce
Re: Skript als User postgres automatisch täglich ausführen
Habs selber hingekriegt mit folgender Service Unit (/etc/systemd/system/backup.service):
[Unit]
Description=Postgres Backup
[Service]
Type=simple
ExecStart=/home/postgres/backup.sh
User=postgres
WorkingDirectory=/home/postgres
[Install]
WantedBy=multi-user.target
und folgender Timer Unit (/etc/systemd/system/backup-timer.timer):
[Unit]
Description=Postgres Backup Timer
[Timer]
OnCalendar=Mon-Sun *-*-* 16:00:00
Unit=backup.service
[Install}
WantedBy=multi-user.target
Befehle zum scharfmachen (als ROOT):
systemctl enable backup.service
systemctl enable backup-timer.timer
systemctl start backup-timer.timer
Gruß Christian
[Unit]
Description=Postgres Backup
[Service]
Type=simple
ExecStart=/home/postgres/backup.sh
User=postgres
WorkingDirectory=/home/postgres
[Install]
WantedBy=multi-user.target
und folgender Timer Unit (/etc/systemd/system/backup-timer.timer):
[Unit]
Description=Postgres Backup Timer
[Timer]
OnCalendar=Mon-Sun *-*-* 16:00:00
Unit=backup.service
[Install}
WantedBy=multi-user.target
Befehle zum scharfmachen (als ROOT):
systemctl enable backup.service
systemctl enable backup-timer.timer
systemctl start backup-timer.timer
Gruß Christian
Re: Skript als User postgres automatisch täglich ausführen
Die zitierten drei Zeilen sorgen dafür, dass auch bei/während jedem Booten des Rechners ein Backup gemacht wird.homer65 hat geschrieben:03.10.2023 16:48:25/etc/systemd/system/backup.service:
[Install]
WantedBy=multi-user.target
Befehle zum scharfmachen (als ROOT):
systemctl enable backup.service
Falls das nicht gewünscht ist, schalte den Service wieder ab
Code: Alles auswählen
systemctl disable backup.service
Manchmal bekannt als Just (another) Terminal Hacker.
- whisper
- Beiträge: 3379
- Registriert: 23.09.2002 14:32:21
- Lizenz eigener Beiträge: GNU Free Documentation License
-
Kontaktdaten:
Re: Skript als User postgres automatisch täglich ausführen
das stellst du in /etc/default/autopostgresqlbackup einhomer65 hat geschrieben:03.10.2023 14:16:00Danke für den Hinweis. Wie funktioniert es denn? Also in die ROOT Crontab eintragen. Und dann? Was sichert es wohin?
Gruß Christian
Das Script ist ähnlich dem von mysql, deshalb nehme ich praktisch den selben pfad.
Ok, wenn du nur eine DB sichern willst vielleicht auch zuviel Aufwand
Alter ist übrigens keine Ausrede, nur Erfahrung, die sich stapelt.
Re: Skript als User postgres automatisch täglich ausführen
Habe die beiden letzten Zeilen aus dem backup.service Skript entfernt. Beim Versuch diese zu enablen kommen nun folgende (Fehler?) Meldungen:
The unit files have no installation config (WantedBy=, RequiredBy=, Also=,
Alias= settings in the [Install] section, and DefaultInstance= for template
units). This means they are not meant to be enabled using systemctl.
Possible reasons for having this kind of units are:
• A unit may be statically enabled by being symlinked from another unit's
.wants/ or .requires/ directory.
• A unit's purpose may be to act as a helper for some other unit which has
a requirement dependency on it.
• A unit may be started when needed via activation (socket, path, timer,
D-Bus, udev, scripted systemctl call, ...).
• In case of template units, the unit is meant to be enabled with some
instance name specified.
The unit files have no installation config (WantedBy=, RequiredBy=, Also=,
Alias= settings in the [Install] section, and DefaultInstance= for template
units). This means they are not meant to be enabled using systemctl.
Possible reasons for having this kind of units are:
• A unit may be statically enabled by being symlinked from another unit's
.wants/ or .requires/ directory.
• A unit's purpose may be to act as a helper for some other unit which has
a requirement dependency on it.
• A unit may be started when needed via activation (socket, path, timer,
D-Bus, udev, scripted systemctl call, ...).
• In case of template units, the unit is meant to be enabled with some
instance name specified.
Re: Skript als User postgres automatisch täglich ausführen
disablen solltest du sie, vor dem Entfernen der beiden Zeilen. enablen muss du danach nichts mehr, das ist für den .timer ja schon erledigt.homer65 hat geschrieben:03.10.2023 18:13:55Habe die beiden letzten Zeilen aus dem backup.service Skript entfernt. Beim Versuch diese zu enablen kommen nun folgende (Fehler?) Meldungen:
Manchmal bekannt als Just (another) Terminal Hacker.
Re: Skript als User postgres automatisch täglich ausführen
@JTH
Super, das war wohl der passende Hinweis. Ich denke jetzt funktioniert es richtig. Nochmal vielen Dank.
Super, das war wohl der passende Hinweis. Ich denke jetzt funktioniert es richtig. Nochmal vielen Dank.