Ich habe eine sehr kleine, nicht-essentielle Datenbank auf meinem NAS, die wöchentlich von einem kleinen Bash-Skript gesichert that is a modified version of this link's one werden:Powershell auf Debian 8 - Rohr von mysqldump gzip
outpath='/media/backupfiles/mysql_data'
dumpdate=$(date +"%Y-%m-%d")
mysqldump --user=xxx --password=xxx --events --all-databases | gzip -7 > ${outpath}/mysqldump_${dumpdate}.sql.gz
Dieses Skript funktioniert einwandfrei. Allerdings habe ich nicht viel Erfahrung mit Bash, während ich gerne mit PowerShell herumcodiere. Natürlich wollte ich einen analogen Powershell-Skript erstellen:
param(
[string]$OutPath = "/media/backupfiles/mysql_data",
[string]$DumpBaseName = "mysqldump_$(Get-Date -Format "yyyy-MM-dd").sql"
)
mysqldump --user=xxx --password=xxx --events --all-databases | gzip -7 > $($OutPath)/$($DumpBaseName).gz
das Skript zu starten, begann ich zuerst die Konsole als root
begann dann powershell
und dann begann das Skript /home/mysqldump.ps1
.
Leider ist das obige Skript nicht funktioniert:
out-Datei: Der Zugriff auf den Pfad '/ media/backupfiles/mysql_data' ist verweigert.
Als ich
mysqldump --user=xxx --password=xxx --events --all-databases | gzip -7 > /media/backupfiles/mysql_data/test.sql.gz
in der Konsole manuell eingeben, wird die Datei erzeugt, aber es ist zu groß (etwa doppelt so groß wie die Bash-Version), hat keine User- Privilegien selbst (was bedeutet, dass ich chown
ausführen muss, bevor ich darauf zugreifen kann), und auch, wenn ich dann versuche, es (mit 7-zip oder mit gzip -d
) zu öffnen, sagen mir beide, dass die Datei nicht geöffnet werden kann und dass Es ist nicht im Gzip-Format.
ich dann versucht:
Start-Process mysqldump -ArgumentList " --user=xxx --password=xxx --events --all-databases | gzip -7 > /media/backupfiles/mysql_data/test.sql.gz"
Dies schlägt fehl, auch:
mysqldump: unbekannte Option '-7'
Für mich scheint es, wie das Rohr/Umleitungsoperator ist das Problem. Leider habe ich keine Ideen mehr, wie dieses Skript funktioniert (ohne Zwischendateien oder -skripte). Das Internet erwies sich dieses Mal nicht als sehr hilfreich, aber das könnte dadurch entstehen, dass ich nach den falschen Dingen suche.
Gibt es etwas, das ich vermisse? Oder versuche ich einfach eine Funktionalität zu bekommen, die (noch) nicht in PowerShell für Linux implementiert ist?
Gebrauchte Software:
- OS: Openmediavault 3.0.88 (die Debian ist 4.9.30-2 + deb9u2 ~ bpo8 + 1 2017.06.27) x86_64 GNU/Linux)
- Powershell: v6.0.0-beta.6
- gzip: 1,6
- mysqldump: Ver 10.13 Verteilung 5.5.57
Ich verstehe, dass es keinen Vorteil in meinem Powershell -"Implementierung"; es ist nur dafür zu lernen, wie die Dinge funktionieren. Vielen Dank für die Erläuterung der Parameter in Bash und die Erläuterung von '>' in PowerShell; jedoch schlagen beide Vorschläge zum Ersetzen von '>' fehl. 'Out-File .. -Encoding ascii' gibt eine Datei von anständiger Größe zurück, ist aber immer noch nicht lesbar ('gzip -d'/7zip GUI). 'Set-Content' erzeugt ein .gz, das wiederum doppelt so groß ist wie das funktionierende Bash-Skript (allerdings nicht die gleiche Größe wie bei Verwendung von'> '), aber immer noch nicht lesbar. – flolilolilo
Ich habe keine Ahnung, was dort passiert, aber es sieht wie ein Fehler für mich aus. –