Windows Server下使用Cygwin的Tar命令执行备份操作失败求解决
故障原因
- 核心问题为
tar命令参数顺序不符合新版本校验规则:你所使用的命令中,--null参数放在了-T -之后,新虚拟机的Cygwin环境内置的GNU Tar版本更高,对参数位置的校验更严格。--null的作用是指定-T参数读取的文件列表使用NULL字符作为分隔符(对应find命令的-print0输出格式),必须放在-T参数之前才会生效,放在后面无对应作用对象,就会触发报错。 - 旧虚拟机环境可正常运行是因为旧版Tar对参数顺序的容错性更高,不会校验这类位置问题,版本升级后校验规则生效导致报错。
解决方案
仅需要调整tar部分的参数顺序,将--null移到-T -之前即可,修改后的完整命令如下:
find . -regextype posix-egrep -ctime -1 -type f ! -regex ".+?[.](pst|tgz|zip|avi)" -print0 | tar -czvf /cygdrive/(share name)/(filename).tgz --null -T -
- 替换命令中的
(share name)和(filename)为实际的共享目录名称和备份文件名称即可正常执行 - 原有文件过滤规则、压缩规则、输出日志规则无需修改,仅调整参数顺序即可解决问题
内容的提问来源于stack exchange,提问作者MVB
相关产品推荐
相关产品推荐

