Зупинення смоли після розміщення запису або EOF у фактичному архіві стрічок


1

Мені щойно передали купу LTO-5 та бібліотеку стрічок, і захоплююче завдання витягти підмножину файлів.

Порядок масштабів - це 60 стрічок із зазначеної купи, приблизно 10 000 файлів по 70 000 на стрічку (можливо, півдесятка чи десяток каталогів asstd), які мені потрібно витягнути. У бібліотеці стрічок працює тар 1,23

У мене є попередні скиди вмісту кожної стрічки відповідно до tar --listцього, я радий узгодити це зі своїм списком файлів, які мені потрібно витягнути, щоб я міг подавати у правильному потоці записів, щоб захопити, але

tar -xvf /dev/nst0 -b $file_to_pull

не зупиняється, поки я не дойду до кінця стрічки. Що має сенс - дьоготь може надходити з шаблоном підстановки, щоб він просто закінчувався архівом.

Я думаю, що я міг би вирішити це, просто подавши в каталог глобус і очистивши непотрібні файли, як тільки вони знімуть стрічку, але я не можу допомогти, але думаю, що повинен бути спосіб зупинити смолу на кордоні EOF та пропустити крок очищення . Правильно? У всьому моєму полюванні, однак, я не знайшов нічого подібного характеру ..

Отже, питання:

  • Чи є спосіб отримати дьоготь (або чорт, що-небудь інше), щоб витягнути лише один файл звідки б голова стрічки, а потім зупинитись ? Або подати сигнал смоли, як тільки він отримав EOF і зупиниться?

  • По черзі, я подумки атакую ​​цей дивний спосіб? Раді приймати інші пропозиції, якщо хтось їх отримав.

Зауважуючи, звичайно, це не проблема, яка зараз є нерозв'язною, просто мої поточні варіанти здаються справді незручними - це перший раз, коли я дійсно мав справу зі стрічкою такого масштабу (а інші наші стрічки - це все LTFS )

Відповіді:


2

Ви можете попросити тар виконувати дію кожні кілька блоків у тому, що вони називають контрольно-пропускними пунктами . Ця дія може перевірити, чи був вилучений шуканий файл, і якщо так, знищить дьоготь. Я спробував це за допомогою файлу tar, і, здається, він працює нормально.

Ось мій приклад сценарію, щоб зробити мій тест, tarring / usr / bin та витягуючи usr / bin / bash у / tmp / usr / bin / bash. За замовчуванням - контрольна точка - 10 блоків.

#!/bin/bash

cat <<\! >/tmp/checkdone
#!/bin/bash
# env has TAR_CHECKPOINT TAR_ARCHIVE TAR_VERSION TAR_BLOCKING_FACTOR
# tar -C directory is NOT used for checkpoint action!
want=$1

if size=$(stat --printf='%s\n' "$want" 2>&1)
then if [ "$(</tmp/lastsize)" = "$size" -a -s /tmp/pid ]
    then  echo "same size $size. time to stop"
          ls -l "$want"
          >/tmp/lastsize
          kill -1 $(</tmp/pid)
    else  echo "partial size $size"
          echo "$size" >/tmp/lastsize
    fi
else echo -n "."
fi
!
chmod +x /tmp/checkdone
>/tmp/lastsize
>/tmp/pid

tar -cf /tmp/tar /usr/bin/ # create example tar file
# wanted file. must be in current dir
want=usr/bin/bash
cd /tmp || exit # dont use tar -C dir

tar -xvf /tmp/tar "$want" --checkpoint=10 --checkpoint-action=exec="/tmp/checkdone $want" &
echo $! >/tmp/pid
wait

rm /tmp/tar /tmp/pid /tmp/lastsize /tmp/checkdone
rm -fr /tmp/usr

Гм, ура, я думаю, що це, можливо, буде найближче, що я отримаю (роблячи деякі тести зараз) без необхідності переписувати щось на низькому рівні, але в процесі створення каталогу стрічок (що я все-таки можу зробити для подальшого ознайомлення) з отримати розміри файлів, щоб знати, коли зупинятись, мені вже доведеться зробити один пропуск стрічки, і в цей момент я, можливо, просто зробив повний дамп. Чорт, дьоготь! кулак хвиль
танатіш

З того, що я пам’ятаю про стрічкові накопичувачі (10+ років тому), ви можете знайти диск, як зупинка часткового шляху через файл, і все одно накрутить на міжфайловий розрив! Удачі та моїх симпатій.
meuh

Ну добре, це стрічка, тому люди, які просять мене ставитися до цього, як до файлової системи з випадковим доступом, отримують освіту в цьому процесі. Я щойно прийняв, що я можу також записати пару терабайт диска, так, так, накопичувачі розігналися, і у мене є вторинний процес вирізати непотрібні файли, коли відбувається перехід від постановки на живий. Те, що ви робите: P
tanantish
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.