磁带错误后停止 tar

磁带错误后停止 tar

我正在尝试使用磁带设备提取文件tar并收到 IO 错误:

tar: /dev/nst0: Cannot read: Input/output error

然而,tar无论如何都会尝试继续:

tar: Skipping to next header

有没有办法tar在第一次出现错误后直接退出Cannot read?我查阅了手册页和tar手册,但没有找到类似的东西。或者有没有办法在调用 shell 中捕获错误消息并tar从外部终止?

操作系统是 Ubuntu 16.04,内核为 4.4.0-38,tarGNU tar 为 1.28。

答案1

您可以使用期望脚本:

#!/usr/bin/expect -f

# Timeout: 10000 seconds
set timeout 10000

spawn tar your tar args come here
# spawn custom-tar-script.sh

expect "tar: /dev/nst0: Cannot read: Input/output error"

send_user "Will kill PID <[exp_pid]>.\n"
exec kill [exp_pid]
# exec killall tar
# exec custom-kill-script.sh
close

(根据您的需要进行调整)

相关内容