Я робив таке: 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, інакше ви перезапишете ваш частковий архів. Не намагайтеся безпосередньо додавати до корумпованого архіву дьогтю.