【发布时间】:2018-02-19 18:49:44
【问题描述】:
我的 NAS 上有一个非常小的非必要数据库,每周将由一个小的 Bash 脚本 that is a modified version of this link's one 备份:
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
这个脚本完美无缺。但是,我对 Bash 的熟练程度并不高,但我喜欢使用 PowerShell 进行编码。自然,我想创建一个模拟 PowerShell 脚本:
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
要启动脚本,我首先以root 启动控制台,然后启动powershell,然后启动脚本/home/mysqldump.ps1。
很遗憾,上面的脚本不起作用:
out-file : 访问路径 '/media/backupfiles/mysql_data' 是 拒绝。
当我进入时
mysqldump --user=xxx --password=xxx --events --all-databases | gzip -7 > /media/backupfiles/mysql_data/test.sql.gz
在控制台中手动生成文件,但文件太大(大约是 Bash 版本的两倍),本身没有用户权限(这意味着我必须先运行 chown 才能运行访问它),而且,当我尝试打开它(使用 7-zip 或 gzip -d)时,都告诉我该文件无法打开并且它不是 gzip 格式。
然后我尝试:
Start-Process mysqldump -ArgumentList " --user=xxx --password=xxx --events --all-databases | gzip -7 > /media/backupfiles/mysql_data/test.sql.gz"
这也失败了:
mysqldump:未知选项'-7'
对我来说,管道/重定向运算符似乎是问题所在。不幸的是,我对如何使这个脚本工作(没有中间文件或脚本)没有更多的想法。这一次互联网并没有起到太大的帮助,不过,这可能是我搜索错误的东西造成的。
我有什么遗漏的吗?还是我只是想获得一个(尚未)在 PowerShell for Linux 中实现的功能?
使用过的软件:
- 操作系统:openmediavault 3.0.88(即Debian 4.9.30-2+deb9u2~bpo8+1 2017-06-27)x86_64 GNU/Linux)
- PowerShell:v6.0.0-beta.6
- gzip:1.6
- mysqldump:版本 10.13 Distrib 5.5.57
【问题讨论】:
标签: mysql powershell debian gzip