zip aa.zip -r mysql_data -P 123456 | split -a 2 -d -b 100m aa.zip ab.zip.
分步执行可以成功,使用管道就出现如下问题:
split: 无法打开"aa.zip" 读取数据: 没有那个文件或目录
请指教!
2 个解决方案
#1
我的理解是这样的,不一定对
管道|符号是前一个命令的输出作为后一个的输入,zip aa.zip -r mysql_data -P 123456 命令并没有输出aa.zip(一定要把命令得到的结果和命令输出区分开),所以后面的命令当然出错了。
你可以使用符号&&。
zip aa.zip -r mysql_data -P 123456 && split -a 2 -d -b 100m aa.zip ab.zip
管道|符号是前一个命令的输出作为后一个的输入,zip aa.zip -r mysql_data -P 123456 命令并没有输出aa.zip(一定要把命令得到的结果和命令输出区分开),所以后面的命令当然出错了。
你可以使用符号&&。
zip aa.zip -r mysql_data -P 123456 && split -a 2 -d -b 100m aa.zip ab.zip
#2
zip本身就可以分割,只要加上-s 1m这种参数就可以:
在tmp下可以看到
如果一定要用split,/tmp/aa.zip就要替换为“-”,表示输出到stdout,而不是输出到aa.zip这个文件,而split的输入文件名也要替换为“-”,表示从stdin输入。
在tmp下可以看到
具体使用可以查man。
zip /tmp/aa.zip -s 1m -P 123456 -r mysql_data
在tmp下可以看到
aa.zip aa.z01 ...
如果一定要用split,/tmp/aa.zip就要替换为“-”,表示输出到stdout,而不是输出到aa.zip这个文件,而split的输入文件名也要替换为“-”,表示从stdin输入。
zip - -P 123456 -r mysql_data | split - -d -b 1m /tmp/aa.zip. #输出文件前缀(只能叫前缀)最后最好有个“.”
在tmp下可以看到
aa.zip.00 aa.zip.01 ...
具体使用可以查man。
#1
我的理解是这样的,不一定对
管道|符号是前一个命令的输出作为后一个的输入,zip aa.zip -r mysql_data -P 123456 命令并没有输出aa.zip(一定要把命令得到的结果和命令输出区分开),所以后面的命令当然出错了。
你可以使用符号&&。
zip aa.zip -r mysql_data -P 123456 && split -a 2 -d -b 100m aa.zip ab.zip
管道|符号是前一个命令的输出作为后一个的输入,zip aa.zip -r mysql_data -P 123456 命令并没有输出aa.zip(一定要把命令得到的结果和命令输出区分开),所以后面的命令当然出错了。
你可以使用符号&&。
zip aa.zip -r mysql_data -P 123456 && split -a 2 -d -b 100m aa.zip ab.zip
#2
zip本身就可以分割,只要加上-s 1m这种参数就可以:
在tmp下可以看到
如果一定要用split,/tmp/aa.zip就要替换为“-”,表示输出到stdout,而不是输出到aa.zip这个文件,而split的输入文件名也要替换为“-”,表示从stdin输入。
在tmp下可以看到
具体使用可以查man。
zip /tmp/aa.zip -s 1m -P 123456 -r mysql_data
在tmp下可以看到
aa.zip aa.z01 ...
如果一定要用split,/tmp/aa.zip就要替换为“-”,表示输出到stdout,而不是输出到aa.zip这个文件,而split的输入文件名也要替换为“-”,表示从stdin输入。
zip - -P 123456 -r mysql_data | split - -d -b 1m /tmp/aa.zip. #输出文件前缀(只能叫前缀)最后最好有个“.”
在tmp下可以看到
aa.zip.00 aa.zip.01 ...
具体使用可以查man。