Ich muss viele DB-Backups manuell erstellen mysqldump
, zum Beispiel so:
mysqldump -uroot -proot my-db > my-db.sql
Ich frage mich, ob es eine einfache Möglichkeit gibt, das aktuelle Datum oder den Zeitstempel in den Dateinamen aufzunehmen, sodass die Datei folgendermaßen aussieht: my-db-20150917.sql
(oder ein anderes Format ist auch in Ordnung, sogar ein Zeitstempel).
Antwort1
Wie kann ich meine Dateinamen mit einem Datumsstempel versehen?
Um die aktuelle Uhrzeit/das aktuelle Datum in einen Dateinamen aufzunehmen, verwenden Sie eine Kombination aus date
, und Befehlsersetzung:
mysqldump -uroot -proot my-db > my-db-`date +%Y%m%d`.sql
Derman
Seite fürdate
erklärt die anderen Optionen, die Sie verwenden können. In diesem Kontext könnte aber auch die Angabe der Zeit für Sie von Interesse sein:
mysqldump -uroot -proot my-db > my-db-`date +%Y%m%d-%H%M`.sql
Moment, was ist diese „Befehlsersetzung“?
Zitat aus demBash-Hacker-Wiki zur Befehlsersetzung:
Die Befehlsersetzung wird zur Ausgabe von Befehlen erweitert. Diese Befehle werden in einer Subshell ausgeführt und ihre
stdout
Daten werden durch die Ersetzungssyntax erweitert.
Im Grunde genommen date -%Y%m%d
werden Ausgaben ausgegeben 20150917
, und wir verwenden die Backtick- `
Form () der Befehlsersetzung, um diese Ausgabe in den Befehl einzuschließen, den Sie zum Sichern Ihrer Datenbank angegeben haben. Wir hätten genauso gut Folgendes verwenden können:
mysqldump -uroot -proot my-db > my-db-$(date +%Y%m%d).sql
um das gleiche Ergebnis zu erzielen.