Я пытаюсь использовать pv
(pipeviewer) вместе с tar для создания резервных копий на ленту, чтобы увидеть ход и т. Д., Например:
du -s /home/myuser
115630916 /home/myuser
tar -cf - /home/myuser/ | pv -s 115630916 > /dev/nst0
, который работает нормально, записывает на ленту успешно. Но как только я пытаюсь проверить архив tar:
mt -f /dev/nst0 rewind
tar -tvf /dev/nst0
я получаю следующие ошибки:
tar: /dev/nst0: Cannot read: Cannot allocate memory
tar: At beginning of tape, quitting now
tar: Error is not recoverable: exiting
Я погуглил, и были предложения, которые я использую --blocking-factor=128
при создании моей резервной копии и восстановлении. Я все еще получаю ту же ошибку.
Также стоит отметить, что если я просто использую tar, все будет работать на 100%, включая восстановление, так что, возможно, pv
сломает его?
Решил, pv создавал другой размер блока / буфера ...
Со страницы pv man :
Размер буфера по умолчанию - это размер блока файловой системы входного файла, умноженный на 32 (максимум 512 КБ) или 400 КБ, если блок размер не может быть определен.
blockquote>Со страницы tar man :
размер блока Nx512 байт (по умолчанию N = 20)
blockquote>задайте правильный размер буфера для
pv
как (20 x 512 = 10240)tar -cf - /home/myuser/ | pv -B 10240 -s 142524k > /dev/nst0
Теперь, если вы тестируете архив с помощью
tar -tvf /dev/nst0
, он должен работать.
У меня была очень похожая ошибка, но я не использовал pv
или что-то еще в канале между tar
и ленточным устройством.
Бит фактора блокировки является ключевым, хотя. Я бы прочитал, что для достижения наилучших результатов, вы должны использовать больший размер блока, чем по умолчанию, поэтому я использовал коэффициент блокировки 512 в командной строке tar:
tar -b 512 -cf /dev/tape files
К сожалению, tar не вычисляется автоматически фактор блокировки, и вы должны указать его при восстановлении.
tar -b 512 -xpf /dev/tape