rsync на основе измененного времени [дубликат]

So how can I instruct tar to ignore missing input files?

Es realmente simple :simplemente use el indicador --ignore-failed-readen su comando tar:

$/bin/tar -cz --ignore-failed-read data config myfile 2>/dev/null | /bin/dd of=backup.tar 2>/dev/null

$echo ${PIPESTATUS[0]}

> 0

Por cierto :Tenga en cuenta que la respuesta de Hauke ​​Laging es más engorrosa, pero tarsolo devuelve 0 si todo está bien, o si el único archivo que falta es myfile... con esto, tardevuelve 0 si todo está bien, o incluso cuando falta algún archivo.


Con esto:

/bin/tar -cz --ignore-failed-read data config myfile | /bin/dd of=backup.tar 2>/dev/null

(tenga en cuenta que no estoy redirigiendo stderrde tara/dev/null)si myfileno existe, tardevuelve0(si no hay otros errores, por supuesto )y obtienes esto enstderr:/bin/tar: myfile: Warning: Cannot stat: No such file or directory

tarmanual dice:

‘--ignore-failed-read’ Do not exit with nonzero on unreadable files or directories. This option has effect only during creation. It instructs tar to treat as mild conditions any missing or unreadable files (directories). Such failures don’t affect the program exit code, and the corresponding diagnostic messages are marked as warnings, not errors. These warnings can be suppressed using the ‘--warning=failed-read’ option

pero, lamentablemente, --warning=failed-readsuprima todas las advertencias sobre errores de lectura -:en su caso, suprima las advertencias sobre un archivo que no existe, pero también suprima las advertencias sobre errores de E/S , por ejemplo... está lejos de ser óptimo; aparentemente, tarno tiene una bandera para decirlo:oye,supresión fallida -advertencia de lectura solo si el archivo no existe , entonces, puede ser, esto resuelva su problema:

/bin/tar -cz --ignore-failed-read data config myfile 2> >(grep -v 'No such file or directory' 1>&2) | /bin/dd of=backup.tar 2>/dev/null

esto:>(... )es Sustitución de procesos

de esta manera, su comando tailno cambia su número de retorno si el archivo no existe, no recibe mensajes de advertencia sobre archivos faltantes y recibe mensajes de advertencia sobre cualquier otro error de lectura.


esto>

No puedo evitar pensar que ninguna de estas soluciones es realmente buena, así que se me ocurrió esto:

/bin/tar -cz -T <(\ls -A -1) 2>/dev/null | /bin/dd of=backup.tar 2>/dev/null

con esto, está enviando a tarsolo los archivos que realmente existen en el momento de la ejecución del comando :no necesita preocuparse por sus nombres, o incluso qué archivo existe o no :usted siempre ejecute el mismo comando (sin importar qué ), escala perfectamente si falta 1 archivo, o n archivos faltantes, y no pierde ningún error.

(tenga en cuenta la barra invertida si está delante de lscomando :de esta manera, evita cualquier alias ls, por lo tanto, su salida es más confiable)

0
17.12.2018, 21:27
0 ответов

Теги

Похожие вопросы