Wie füge ich dem Dateinamen im Cron-Job eine eindeutige ID hinzu?

8

Mein Cronjob sieht so aus:

5 3 * * * mysqldump -u root test > /srv/backup/mysql_daily.dump

Wie kann ich den Dateinamen für jedes Mal eindeutig machen, wenn cronjob mysql_daily.dump schreibt?

Kumpel
quelle
2
Bitte nehmen Sie sich die Zeit, um den Titel richtig zu buchstabieren. Dies erleichtert die Suche für alle erheblich.
Mikel
1
Sie haben geschrieben: "So fügen Sie der Datei nime in cron job eine eindeutige ID hinzu".
Mikel
Warum verwenden Sie nicht automysqlbackup?
Stoeff

Antworten:

14

Für Bash vielleicht:

... > /srv/backup/mysql_daily-$(date -u +\%Y\%m\%dT\%H\%M\%S)Z.${RANDOM}.dump

Persönlich habe ich in der Regel nur einfache Befehle in meine crontab. Ich würde dies in ein kleines Skript einfügen und das Skript in der verwenden crontab. Dies hätte den Vorteil, dass die %Charaktere nicht entkommen müssen (eine häufige Gefahr für Crontab).

Update machte es ISO 8601 per @johan Kommentar

cron

nix
quelle
1
Sie könnten die Syntax nur ein wenig ändern und es wäre das perfekte ISO 8601-Datumsformat. [JJJJ] [MM] [TT] T [hh] [mm] [ss] Z, da Sie das Datum -u für UTC verwenden, können Sie nach dem Datum ein Z hinzufügen;). en.wikipedia.org/wiki/…
Johan
3

Die allgemeine Praxis hierfür besteht darin, einen Zeitstempel zu verwenden date +%s, um etwas Nützliches zum Markieren der Datei zu generieren (ich habe Sekunden als Beispiel verwendet, aber Sie können ein beliebiges Datumsformat verwenden). Es ist wirklich nicht notwendig, einen wirklich eindeutigen Dateinamen zu haben, solange der Dateiname nicht in Konflikt steht.

5 3 * * * mysqldump -u root test > /srv/backup/mysql_daily_`date +\%s`.dump
Caleb
quelle
1

Versuchen

5 3 * * * mysqldump -u root test > /srv/backup/mysql_daily.$(/bin/date +\%Y\%m\%d).dump

Dadurch wird das aktuelle Datum im Format JJJJMMTT in den Dateinamen eingefügt.

Gilles 'SO - hör auf böse zu sein'
quelle