El alquitrán de GNU tiene una opción --ignore-failed-read
que hace justamente eso.
Si no está utilizando GNU tar, puede generar una lista de archivos para hacer una copia de seguridad o una lista de archivos para excluir. GNU find tiene un -readable
predicado que prueba si tiene permiso de lectura en el archivo. Con otras versiones de find, para quedarse find
solo, necesitará aproximar esto con los permisos de archivo ( -perm
) y la propiedad ( -user
, group
), lo que hace que sea difícil lidiar con grupos, ACL, etc. Puede obtener una prueba precisa llamando al El programa externo o shell incorporado test
. Aquí hay un ejemplo asumiendo que tar
tiene la opción -X
de leer una lista de nombres de archivo separados por una nueva línea para excluirlos (se omiten los nombres de archivo que contienen nuevas líneas, para evitar problemas de análisis):
find . ! -name '*
*' -exec sh -c 'for x; do [ -r "$x" ] || printf "%s\\n" "$x"; done' _ {} |
tar -cf backup.tar -X - .