El alquitrán de GNU tiene una opción --ignore-failed-readque 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 -readablepredicado que prueba si tiene permiso de lectura en el archivo. Con otras versiones de find, para quedarse findsolo, 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 tartiene la opción -Xde 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 - .