Robiłem: tar -cvfi musiałem to zabić ctrl-C. Wiem, że powinienem był to zrobić, Ctrl-Za potem przenieść zadanie na pierwszy plan ... ale to nie jest historia.
Czy w lokalizacji docelowej jest niepełny plik tar?
Karthik T
Tak, jest niepełna smoła.
mthpvg
Odpowiedzi:
11
Ta metoda odtworzy archiwum tar i doda gotową część do istniejącego pliku. Może to być przydatne w przypadku tworzenia kopii zapasowej przez połączenie sieciowe. Prawdopodobnie spowoduje to uszkodzenie archiwum, jeśli jakiekolwiek dane w pliku INFILES uległy zmianie. Po zakończeniu sprawdź swoje archiwum.
Zmień INFILES i OUTFILE na prawidłowe nazwy w następnym wierszu.
Zakładam, że jest to szybsze niż ponowne uruchomienie procesu tar, ponieważ w rzeczywistości nie zapisuje on niczego na dysku?
Tyler
2
Najlepszym rozwiązaniem byłoby usunięcie pliku tar i ponowne uruchomienie procesu poprzedzonego nohupi dołączonego do &. Alternatywnie możesz uruchomić tar -tfvi użyć tego jako wykluczenia dla nowego tar -cvf.
tar -cvfzastąpi istniejący plik. Miałeś na myśli tar -rvf? Ostatni plik, który został zapisany w archiwum, był prawdopodobnie niekompletny.
Gilles „SO- przestań być zły”
Pomysł polega więc na utworzeniu listy plików, które są już w archiwum, minus ostatni, który prawdopodobnie jest niekompletny. A potem uruchomić tar -rvf?
Co robię w przypadku, gdy mam niepełne tararchiwum, tworzę listę plików w archiwum:
tar tf archive.tar | sed -e '/\/$/d' -e x -e '/^$/d' >files-done
sedPolecenie usuwa wszystkie te linie, które mają ukośnik: Są to katalogi, a nie pliki i chcemy ponownie zrzucić katalogów i tylko pominąć te pliki w tych katalogach, że mamy już w pierwszym archiwum tar. Ponadto pozwalamy sedusunąć ostatnią nazwę pliku, ponieważ najprawdopodobniej została ona zrzucona tylko częściowo, więc zarchiwizujemy ją ponownie.
Następnie przekaż files-donelistę za pomocą opcji -X do nowego tarpolecenia:
tar cfvX archive2.tar files-done SOURCEDIR
Pamiętaj, aby użyć nowej nazwy pliku wyjściowego w nowym poleceniu tar, w przeciwnym razie zastąpisz częściowe archiwum. Nie próbuj dołączać bezpośrednio do uszkodzonego archiwum tar.
Odpowiedzi:
Ta metoda odtworzy archiwum tar i doda gotową część do istniejącego pliku. Może to być przydatne w przypadku tworzenia kopii zapasowej przez połączenie sieciowe. Prawdopodobnie spowoduje to uszkodzenie archiwum, jeśli jakiekolwiek dane w pliku INFILES uległy zmianie. Po zakończeniu sprawdź swoje archiwum.
Zmień INFILES i OUTFILE na prawidłowe nazwy w następnym wierszu.
Wyjaśnienie:
SIZE="$(wc -c < $OUTFILE)"
# Pobierz aktualny rozmiar archiwum.tar -cz --to-stdout "$INFILES" |
# Rozpocznij tworzenie archiwum i wyślij dane wyjściowe dotail
polecenia.tail -c +$(($SIZE+1)) >>
# Zignoruj dane przed $ SIZE + 1 i wznów resztę archiwum $ OUTFILE.źródło
Najlepszym rozwiązaniem byłoby usunięcie pliku tar i ponowne uruchomienie procesu poprzedzonego
nohup
i dołączonego do&
. Alternatywnie możesz uruchomićtar -tfv
i użyć tego jako wykluczenia dla nowegotar -cvf
.źródło
tar -cvf
zastąpi istniejący plik. Miałeś na myślitar -rvf
? Ostatni plik, który został zapisany w archiwum, był prawdopodobnie niekompletny.tar -rvf
?Nie możesz; po prostu musisz zacząć od nowa.
źródło
Co robię w przypadku, gdy mam niepełne
tar
archiwum, tworzę listę plików w archiwum:sed
Polecenie usuwa wszystkie te linie, które mają ukośnik: Są to katalogi, a nie pliki i chcemy ponownie zrzucić katalogów i tylko pominąć te pliki w tych katalogach, że mamy już w pierwszym archiwum tar. Ponadto pozwalamysed
usunąć ostatnią nazwę pliku, ponieważ najprawdopodobniej została ona zrzucona tylko częściowo, więc zarchiwizujemy ją ponownie.Następnie przekaż
files-done
listę za pomocą opcji -X do nowegotar
polecenia:Pamiętaj, aby użyć nowej nazwy pliku wyjściowego w nowym poleceniu tar, w przeciwnym razie zastąpisz częściowe archiwum. Nie próbuj dołączać bezpośrednio do uszkodzonego archiwum tar.
źródło