Этот метод восстановит ваш архив tar и добавит готовую часть к существующему файлу. Это может быть полезно при резервном копировании по сетевому соединению. Скорее всего, вы получите поврежденный архив, если какие-либо данные в ваших файлах INFILES изменились. Обязательно протестируйте свой архив после завершения.
Измените INFILES и OUTFILE на правильные имена в следующей строке.
Я предполагаю, что это быстрее, чем просто перезапустить процесс tar, потому что он на самом деле ничего не записывает на диск?
Тайлер
2
Лучшим решением будет удалить файл tar и перезапустить процесс с добавлением nohupи добавлением &. Кроме того, вы можете запустить tar -tfvи использовать это как исключение для нового tar -cvf.
tar -cvfперезапишет существующий файл. Вы имели в виду tar -rvf? Кроме того, последний файл, который был записан в архив, вероятно, был неполным.
Жиль "ТАК - перестань быть злым"
Таким образом, идея состоит в том, чтобы составить список файлов, которые уже находятся в архиве, за исключением последнего, который, вероятно, является неполным. А потом запустить tar -rvf?
mthpvg
2
Вы не можете; вам просто нужно начать все сначала.
Что я делаю в том случае, если у меня есть неполный 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.
Ответы:
Этот метод восстановит ваш архив tar и добавит готовую часть к существующему файлу. Это может быть полезно при резервном копировании по сетевому соединению. Скорее всего, вы получите поврежденный архив, если какие-либо данные в ваших файлах INFILES изменились. Обязательно протестируйте свой архив после завершения.
Измените INFILES и 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
архив, я создаю список файлов в архиве:Команда
sed
удаляет все те строки, которые имеют косую черту: это каталоги, а не файлы, и мы хотим сбросить каталоги снова и пропустить только те файлы в этих каталогах, которые у нас уже есть в первом архиве tar. Кроме того, мы разрешилиsed
удалить последнее имя файла, поскольку оно, скорее всего, было выгружено только частично, поэтому мы снова заархивируем его.Затем просто передайте
files-done
список с помощью опции -X новойtar
команде:Убедитесь, что в новой команде tar используется другое имя выходного файла, иначе вы перезапишете свой частичный архив. Не пытайтесь напрямую добавлять в поврежденный архив tar.
источник