2010-07-29 07:17:55 +0000 2010-07-29 07:17:55 +0000
84
84

smoła: Wyjście z powodu poprzednich błędów

Napisałem mały skrypt, który taruje i kompresuje listę katalogów + plików.

Skrypt wydaje się działać poprawnie, w tym sensie, że po jego uruchomieniu tworzony jest użyteczny plik .tar.gz.

Jednak po zakończeniu skryptu dostaję ten irytujący komunikat:

tar: Exiting with failure status due to previous errors

Nie widzę żadnych komunikatów o błędach podczas działania skryptu i jak już mówiłem, wyprodukowany plik może być nieskompresowany bez żadnych ostrzeżeń/błędów. Ponieważ używam tego jako części mojej kopii zapasowej, chcę się upewnić, że nie ignoruję czegoś poważnego.

Jakie są możliwe powody pojawienia się tego komunikatu o błędzie/ostrzeżeniu - i czy mogę go bezpiecznie zignorować? Jeśli nie mogę go zignorować, jakie są kroki, aby zdiagnozować i rozwiązać ten błąd?

Pracuję na Ubuntu 10.0.4

Odpowiedzi (9)

106
106
106
2010-07-29 11:22:18 +0000

Otrzymasz ten komunikat, jeśli z jakiegoś powodu tar nie może dodać wszystkich podanych plików do tar. Jednym z najczęstszych jest brak uprawnień do odczytu na jednym z plików. Może to być poważny problem, ponieważ używasz tego do tworzenia kopii zapasowych. Jeśli używasz flagi -v, spróbuj ją wyłączyć. To powinno zmniejszyć ilość danych wyjściowych i pozwolić ci zobaczyć, co się dzieje.

23
23
23
2013-01-28 09:21:24 +0000

problem polega na tym, że argument f przyjmuje jako nazwę pliku następny, więc musi to być ostatni z argumentów

tar cvzf output.tgz folder

lub

tar -cvzf output.tgz folder

jest taki sam i nie ma błędu take.

6
6
6
2014-01-17 12:24:36 +0000

W przypadku tworzenia kopii zapasowych plików, które mogą się zmienić podczas tworzenia kopii, takich jak pliki dziennika, może się przydać opcja tar ‘–ignore-failed-read’ (używam Debiana Linuksa, nie jestem pewien dla tarów bez gnu).

Standardowe wyjście i błąd mogą być przekierowane do dwóch różnych plików za pomocą czegoś w rodzaju:

LOGDIR='/var/log/mylogdir' 
LOG=${LOGDIR}/backup.log 
ERRLOG=${LOGDIR}/backup.error.log 
DATE=$(date +%Y-%m-%d)
HOSTNAME=$(hostname)
DATA_DIRS='/etc /home /root'

tar --ignore-failed-read -f ${BACKUP_DIR}/${HOSTNAME}-${DATE}.tgz -cvz ${DATA_DIRS} > $LOG 2> $ERRLOG

Uważam, że jest to ogólnie bezpieczne, ale proszę uważać, ponieważ tar nie zatrzyma …

5
5
5
2016-10-10 15:03:38 +0000

Miałem ten sam problem i żadna z powyższych odpowiedzi nie działała dla mnie. Odkryłem jednak, że uruchomienie następującego polecenia zadziałało:

tar -cpzf /backups/fullbackup.tar.gz --exclude=backups --exclude=proc --exclude=tmp --exclude=mnt --exclude=sys --exclude=dev --exclude=run /

Błędy, do których odwoływano się w tar: Exiting with failure status due to previous errors, można zidentyfikować, wyłączając opcję -v. Po sprawdzeniu, błędy pochodziły z katalogów takich jak /run i /sys.

Dzięki wyłączeniu tych katalogów, działa on bez zarzutu. Mam nadzieję, że to pomoże każdemu, kto ma podobny problem.

3
3
3
2011-09-10 23:06:14 +0000

Miałem ten sam problem. Wszystko co zrobiłem, to usunąłem myślnik (“-”) z polecenia.

Zamiast wpisywać to jako

tar -cvfz output.tar.gz folder/

spróbuj wpisać to jako

tar cvfz output.tar.gz folder/

Nie wiem, dlaczego myślnik powodował problemy w moim przypadku, ale przynajmniej zadziałało.

2
2
2
2013-10-19 07:52:47 +0000

Źle zrozumiałeś wcześniejszą odpowiedź. Problemem nie jest -, ale to, gdzie f znajduje się na twojej liście argumentów.

tar cvfz target.tgz <files>

Będzie próbował utworzyć archiwum o nazwie “z”, ponieważ jest to tekst po f. Komunikat o błędzie jest spowodowany tym, że tar nie może znaleźć pliku “target.gz”, który mógłby dodać do archiwum “z”.

tar cvzf target.tgz <files>

Poprawnie utworzy plik target.tgz i doda do niego pliki. Dzieje się tak, ponieważ target.tgz jest pierwszym tekstem po argumencie f.

0
0
0
2019-10-15 15:49:46 +0000
One of the reason to get this errors for beginners is that They forget to perform operations in the directory where the files are present Go to that location and perform the command As my files are in desktop ~/Desktop# tar - cf done.tar abc xyz Where xyz and abc are files and we are storing those files in done.tar If we go and perform the command in other location we will get above error
0
0
0
2019-04-23 18:33:45 +0000

Miałem podobny problem z rozpakowaniem pliku, który otrzymałem. Okazało się, że nie miałem uprawnień do zapisu plików w archiwum należącym do roota. Użycie sudo załatwiło sprawę.

0
0
0
2010-07-29 07:26:01 +0000

Zazwyczaj możesz zignorować ten komunikat. Jeśli podczas tworzenia tar'a nastąpiły jakiekolwiek zmiany (takie jak usunięcie/utworzenie/modyfikacja plików) w drzewie katalogów, zostanie wyświetlony ten komunikat. Również jeśli istnieją specjalne pliki, takie jak węzły urządzeń, fifos i tak dalej, spowodują one wyświetlenie tego ostrzeżenia.

Czy jesteś pewien, że nie widzisz żadnych plików winowajcy? Spróbuj z tar cvfz yourtarball.tgz /your/path