Я робив таке: 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
Команда видаляє всі ті рядки, які мають слеш: Ці каталоги, а не файл, і ми хочемо , щоб скинути каталоги знову і тільки пропустити ці файли в цих каталогах, що ми вже в першому архіві дьогтю. Крім того, ми дозволяємо sed
видалити прізвище останнього файлу, оскільки це, швидше за все, було скинуто лише частково, тому ми будемо архівувати його ще раз.
Потім просто переведіть files-done
список через опцію -X до нової tar
команди:
tar cfvX archive2.tar files-done SOURCEDIR
Не забудьте використати інше вихідне ім'я файлу для нової команди tar, інакше ви перезапишете ваш частковий архів. Не намагайтеся безпосередньо додавати до корумпованого архіву дьогтю.