Frage Aktuellen Zeitstempel in Dateiname einschließen?


Ich muss eine Menge DB-Backups manuell mit erstellen mysqldumpzum 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 einzufügen, damit die Datei so aussieht: my-db-20150917.sql (oder ein anderes Format ist in Ordnung, auch ein Zeitstempel).


0
2017-09-17 07:44


Ursprung




Antworten:


Wie kann ich meine Dateinamen mit einem Datum versehen?

Um die aktuelle Uhrzeit / das Datum in einen Dateinamen aufzunehmen, verwenden Sie eine Kombination aus dateund Befehlssubstitution:

mysqldump -uroot -proot my-db > my-db-`date +%Y%m%d`.sql

Das man Seite für date erklärt die anderen Optionen, die Sie verwenden können; In diesem Zusammenhang könnten Sie aber auch daran interessiert sein, die Zeit einzubeziehen:

mysqldump -uroot -proot my-db > my-db-`date +%Y%m%d-%H%M`.sql

Warte, was ist das für eine Befehlssubstitution?

Zitat aus der bash hackers wiki bei Befehlssubstitution:

Die Befehlsersetzung wird auf die Ausgabe von Befehlen erweitert. Diese Befehle werden in einer Subshell ausgeführt und ihre stdout Daten sind das, was die Substitutionssyntax erweitert.

Grundsätzlich gilt, date -%Y%m%d Ausgänge 20150917und wir benutzen den Backtick (`) Form der Befehlsersetzung, um diese Ausgabe in den Befehl aufzunehmen, den Sie zum Sichern Ihrer Datenbank angegeben haben. Wir hätten genauso gebraucht:

mysqldump -uroot -proot my-db > my-db-$(date +%Y%m%d).sql

um das gleiche Ergebnis zu erzielen.


1
2017-09-17 07:47