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 mogę wznowić od momentu zatrzymania zadania?
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 mogę wznowić od momentu zatrzymania zadania?
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.
INFILES="my folder"; OUTFILE="archive.tgz"; SIZE="$(wc -c < $OUTFILE)"; tar -cz --to-stdout "$INFILES" | tail -c +$(($SIZE+1)) >> "$OUTFILE"
Wyjaśnienie:
SIZE="$(wc -c < $OUTFILE)" # Pobierz aktualny rozmiar archiwum.
tar -cz --to-stdout "$INFILES" |# Rozpocznij tworzenie archiwum i wyślij dane wyjściowe do tailpolecenia.
tail -c +$(($SIZE+1)) >> # Zignoruj dane przed $ SIZE + 1 i wznów resztę archiwum $ OUTFILE.
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.
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.