Я делал: tar -cvfи мне пришлось убить его ctrl-C. Я знаю, что должен был сделать, Ctrl-Zа затем вернуть задачу на передний план ... но это не история.
Могу ли я возобновить с того момента, когда остановил задачу?
Я делал: tar -cvfи мне пришлось убить его ctrl-C. Я знаю, что должен был сделать, Ctrl-Zа затем вернуть задачу на передний план ... но это не история.
Могу ли я возобновить с того момента, когда остановил задачу?
Ответы:
Этот метод восстановит ваш архив tar и добавит готовую часть к существующему файлу. Это может быть полезно при резервном копировании по сетевому соединению. Скорее всего, вы получите поврежденный архив, если какие-либо данные в ваших файлах INFILES изменились. Обязательно протестируйте свой архив после завершения.
Измените INFILES и OUTFILE на правильные имена в следующей строке.
INFILES="my folder"; OUTFILE="archive.tgz"; SIZE="$(wc -c < $OUTFILE)"; tar -cz --to-stdout "$INFILES" | tail -c +$(($SIZE+1)) >> "$OUTFILE"
Объяснение:
SIZE="$(wc -c < $OUTFILE)" # Получить текущий размер архива.
tar -cz --to-stdout "$INFILES" |# Начните создавать архив и отправьте вывод в tailкоманду.
tail -c +$(($SIZE+1)) >> # Не обращайте внимания на данные до $ SIZE + 1 и возобновите работу остальной части архива $ OUTFILE.
Лучшим решением будет удалить файл tar и перезапустить процесс с добавлением nohupи добавлением &. Кроме того, вы можете запустить tar -tfvи использовать это как исключение для нового tar -cvf.
tar -cvfперезапишет существующий файл. Вы имели в виду tar -rvf? Кроме того, последний файл, который был записан в архив, вероятно, был неполным.
tar -rvf?
Что я делаю в том случае, если у меня есть неполный tarархив, я создаю список файлов в архиве:
tar tf archive.tar | sed -e '/\/$/d' -e x -e '/^$/d' >files-done
Команда sedудаляет все те строки, которые имеют косую черту: это каталоги, а не файлы, и мы хотим сбросить каталоги снова и пропустить только те файлы в этих каталогах, которые у нас уже есть в первом архиве tar. Кроме того, мы разрешили sedудалить последнее имя файла, поскольку оно, скорее всего, было выгружено только частично, поэтому мы снова заархивируем его.
Затем просто передайте files-doneсписок с помощью опции -X новой tarкоманде:
tar cfvX archive2.tar files-done SOURCEDIR
Убедитесь, что в новой команде tar используется другое имя выходного файла, иначе вы перезапишете свой частичный архив. Не пытайтесь напрямую добавлять в поврежденный архив tar.