焦油管道在运行期间产生错误并停止

问题描述 投票:0回答:1

我正在在线运行较大的复印作业。 我正在使用 tar 将其通过管道传输到 xargs。

我的命令如下所示:

tar cvf - --sort=name --ignore-failed-read -C /pathto/source . | pv | xargs -n 1 -P 32 $(tar xvf - --keep-newer-files -C /pathto/destination)

该命令有效并执行其应该执行的操作。 但是有时它会停止并显示以下错误消息:

tar: Unexpected EOF in archive
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now
sh: 1: xargs: Argument list too long

我怀疑当发生更改(例如删除源文件夹中的文件)时,可能会发生这种情况。文件虽小但很多。 所以当这种情况发生时我只能从头开始,遍历所有已经复制的文件,至少需要半天时间。

所以我想知道是否有办法告诉这个命令它应该继续而不是中断。 它应该继续处理下一个文件。 此次运行中的文件丢失或损坏等错误将在稍后解决。

我已将

--ignore-failed-read
添加到命令中,但没有帮助。 也许我添加错了,或者它没有按照我想象的那样做。

bash tar xargs
1个回答
0
投票

只需使用管道即可。相同的差异,没有潜在的论证错误。

#!/bin/bash

mkfifo my_fifo
tar cvf - --sort=name --ignore-failed-read -C /pathto/source . | pv > my_fifo &
tar xvf my_fifo --keep-newer-files -C /pathto/destination --remove-files

这实现了与原始命令相同的并行提取。

© www.soinside.com 2019 - 2024. All rights reserved.