Irgendwelche Ideen, wie Sie eine Verzeichnisstruktur sichern können, für die es einige Dateien und / oder Verzeichnisse gibt, für die Sie keine Leseberechtigung haben? Ich möchte diese einfach ignorieren, ohne dass das Backup (tar? Jar?) Abstürzt.
Irgendwelche Ideen, wie Sie eine Verzeichnisstruktur sichern können, für die es einige Dateien und / oder Verzeichnisse gibt, für die Sie keine Leseberechtigung haben? Ich möchte diese einfach ignorieren, ohne dass das Backup (tar? Jar?) Abstürzt.
Antworten:
Gnu Teer hat eine Option, --ignore-failed-read
die genau das tut.
Wenn Sie GNU tar nicht verwenden, können Sie entweder eine Liste der zu sichernden Dateien oder eine Liste der auszuschließenden Dateien erstellen. GNU find hat ein -readable
Prädikat, das testet, ob Sie Leseberechtigung für die Datei haben. Bei anderen Versionen von find müssen find
Sie dies mit Dateiberechtigungen ( -perm
) und Besitz ( -user
, group
) approximieren , um alleine zu bleiben. Dies macht es schwierig, mit Gruppen, ACLs usw. umzugehen. Sie können einen genauen Test erhalten, indem Sie aufrufen das eingebaute externe Programm oder die eingebaute Shell test
. In diesem Beispiel wird davon ausgegangen, dass Sie tar
die Möglichkeit haben -X
, eine durch Zeilenumbrüche getrennte Liste der auszuschließenden Dateinamen zu lesen (Dateinamen mit Zeilenumbrüchen werden übersprungen, um Analyseprobleme zu vermeiden):
find . ! -name '*
*' -exec sh -c 'for x; do [ -r "$x" ] || printf "%s\\n" "$x"; done' _ {} |
tar -cf backup.tar -X - .
Wenn die Pfade keine Zeilenumbrüche enthalten, können Sie dies tun:
find . -type f -readable -print | tar cf test.tar -T -
Dies ist möglicherweise auf GNU beschränkt find
und tar
funktioniert möglicherweise nicht mit bestimmten Dateisystemen (NFS, FUSE). Wenn es Zeilenumbrüche gibt oder geben kann, verwenden Sie -print0
anstelle von -print
für find
und fügen Sie --null
für hinzu tar
.