tar: archivo cambiado a medida que lo leemos

estoy usandomake ytar hacer copias de seguridad. Al ejecutar makefile, el comando tar muestrafile changed as we read it. En este caso,

El paquete tar está bien cuando aparece la advertenciapero detiene el comando tar para la siguiente copia de seguridadel archivo que muestra la advertencia, de hecho, no cambia, es realmente extraño que aparezca la advertencialos archivos que muestran la advertencia aparecen aleatoriamente, es decir, cada vez que ejecuto mi makefile, los archivos que muestran la advertencia son diferentes--ignore-failed-read no ayuda Estoy usando tar 1.23 en MinGWAcabo de cambiar mi computadora a WIN7 64 bit. El script funciona bien en el viejo WIN7 32 bit. Pero la versión tar no es tan nueva como la 1.23.

¿Cómo puedo detener la advertencia del alquitrán para detener mi copia de seguridad después de la advertencia?

Edit-2: podría ser la razón

Como dije anteriormente, el script de shell bash funcionó bien en mi vieja computadora. Comparando con la vieja computadora, lamsys La versión es diferente. Así es la versión del comando tar. En la computadora antigua, tar es 1.13.19 y es 1.23 en la computadora nueva. Copié el antiguo comando tar sin copiar su dependencia msys-1.0.dll a la nueva computadora y le cambié el nombre a tar_old. Y también actualicé el comando tar en el script de shell y ejecuté el script. Entonces todo está bien. Por lo tanto, parecía que el problema es el comando tar. Estoy seguro de que no hay ningún archivo cambiado al tarar. ¿Es un error para el comando tar en la nueva versión? No lo sé.

Edit-1: agregar mas detalles

La copia de seguridad es invocada por un script de shell bash. Escanea el directorio de destino y construye el makefile y luego invoca el comando make para usar el comando tar para la copia de seguridad. A continuación se encuentra un makefile típico creado por el script de shell bash.

#--------------------------------------------
# backup VC
#--------------------------------------------
# the program for packing
PACK_TOOL=tar

# the option for packing tool
PACK_OPTION=cjvf

# M$: C driver
WIN_C_DIR=c:

# M$: D driver
WIN_D_DIR=d:

# M$: where the software is
WIN_PRG_DIR=wuyu/tools
# WIN_PRG_DIR=

# where to save the backup files
BAKDIR=/home/Wu.Y/MS_bak_MSYS

VC_FRAMEWORK=/home/Wu.Y/MS_bak_MSYS/tools/VC/VC_framework.tar.bz2
VC_2010=/home/Wu.Y/MS_bak_MSYS/tools/VC/VC_2010.tar.bz2

.PHONY: all

all: $(VC_FRAMEWORK) $(VC_2010)

$(VC_FRAMEWORK): $(WIN_C_DIR)/$(WIN_PRG_DIR)/VC/Framework/*
    @$(PACK_TOOL) $(PACK_OPTION) "$@" --ignore-failed-read /c/$(WIN_PRG_DIR)/VC/Framework
$(VC_2010): $(WIN_C_DIR)/$(WIN_PRG_DIR)/VC/VS2010/*
    @$(PACK_TOOL) $(PACK_OPTION) "$@" --ignore-failed-read /c/$(WIN_PRG_DIR)/VC/VS2010

Como puede ver, el paquete tar se almacena en ~ / MS_bak_MSYS / tools / VC / VC_2010.tar.bz2. Ejecuto el script en ~ / qqaa.~/MS_bak_MSYS Se excluye del comando tar. Por lo tanto, el archivo tar que estoy creando no está dentro de un directorio que estoy tratando de poner en el archivo tar. Por eso sentí extraño que surgiera la advertencia.

Respuestas a la pregunta(6)

Su respuesta a la pregunta