Windows Server 2012: Automatisieren des Speicherauszugs und der Zip-Datei einer MySQL-Datenbank - zip, geplante Tasks, Windows Server 2012, mysqldump

Ich verwende einen Windows Server 2012. Ich muss alle zwei Stunden einen Speicherauszug meiner Datenbank erstellen und die von SQL generierte Datei komprimieren.

Die zip-Datei muss diese Syntax haben: nameOfFile_date_hour.zip.
Ich benötige keine Details zu Minuten und Sekunden für den Namen der Zip-Datei.
Gibt es eine Möglichkeit, das zu tun?

Ich weiĂź, wie man das mit Linux macht, kann aber nicht herausfinden, wie man das mit Windows macht.

Antworten:

1 fĂĽr Antwort â„– 1

Sie können ein PowerShell-Skript schreiben und von Windows Task Scheduler alle 2 Stunden ausführen lassen

Ein schnelles und schmutziges Beispielskript:

# Declare variables
$db = "[DB NAME]"
$user = "[DB USERNAME]"
$pw = "[DB PASSWORD]"
$date = (Get-Date).ToString("yyyy-MM-dd_HH.mm.ss")
$mysql_backupfile = ".backup_$date.sql"
$zipped_backupfile = "$mysql_backupfile.zip"

# Backup MySql database
mysqldump --user=$user --password=$pw --databases $db > $mysql_backupfile

# Compress file using 7zip
sz a -tzip $zipped_backupfile $mysql_backupfile

# Remove uncompressed backup file
rm -Path $mysql_backupfile

Ă„ndern Sie den Datenbanknamen, den Benutzernamen und das Kennwort sowie das Datumsformat nach Bedarf.

Hinweis: Ich bin mir nicht ganz sicher, welche Auswirkungen das direkte Einfügen des Benutzernamens und des Kennworts in das Skript auf die Sicherheit hat. Wenn Ihr Server jedoch sicher ist, ist dies in Ordnung. Sie können die Anmeldeinformationen jedoch nach Belieben laden (z. B. aus einer Umgebung) Variable)

FĂĽr Frage im Kommentar bearbeiten:

So löschen Sie ".zip" -Dateien, die älter als 3 Tage sind:

Get-ChildItem -Filter "*.zip" |
where { $_.LastWriteTime -lt (Get-Date).AddDays(-3) } |
Remove-Item

Lies jetzt