Как я могу надежно архивировать содержимое CD и DVD в формате UDF
Я пытался скопировать содержимое старых компакт-дисков на мобильные диски, чтобы сэкономить место и сохранить содержимое, поскольку перезаписываемые компакт-диски со временем ухудшаются (по крайней мере те, которые я использую). Я придумал этот маленький скрипт, который прекрасно работает с форматированными ISO9660 CD
#!/bin/bash
echo "Reading Volume Information"
SOURCECD=/dev/cdrw
OUTPUTCDDIR=/workarea/tmp
isoinfo dev=$SOURCECD || { printf "%b" "FAILED.\n" ; exit 1 ; }
VOLUMEID=`isoinfo -d dev=$SOURCECD | grep "Volume id" --color=never | awk -F": " '{ print $2}'` || { printf "%b" "FAILED.\n" ; exit 1 ; }
VOLUMESIZE=`isoinfo -d dev=$SOURCECD | grep "Volume size is" --color=never | awk -F": " '{ print $2}'` || { printf "%b" "FAILED.\n" ; exit 1 ; }
LABEL=$VOLUMEID-$VOLUMESIZE
OUTPUTDIR=$OUTPUTCDDIR/$LABEL
if [ -d "$OUTPUTDIR" ]; then # Dir exists, mention that...
echo "$OUTPUTDIR exists...exiting"
exit 1;
fi
mkdir -p "$OUTPUTDIR" || { printf "%b" "FAILED.\n" ; exit 1 ; }
OUTPUTISO=$OUTPUTDIR/image.iso
echo "Copying ISO for $LABEL"
dd if=$SOURCECD of="$OUTPUTISO" bs=2048 conv=sync || { printf "%b" "FAILED.\n" ; exit 1 ; }
echo "Verify Structures for $LABEL"
isovfy -i "$OUTPUTISO" > "$OUTPUTDIR"/verify-report.txt || { printf "%b" "FAILED.\n" ; exit 1 ; }
file "$OUTPUTISO" > "$OUTPUTDIR"/file-report.txt || { printf "%b" "FAILED.\n" ; exit 1 ; }
echo "Generating Metadata for $LABEL"
md5sum -b "$OUTPUTISO" > "$OUTPUTDIR"/md5.sum || { printf "%b" "FAILED.\n" ; exit 1 ; }
isoinfo -d -i "$OUTPUTISO" > "$OUTPUTDIR"/metadata.txt || { printf "%b" "FAILED.\n" ; exit 1 ; }
isoinfo -l -i "$OUTPUTISO" > "$OUTPUTDIR"/ls-lrt.txt || { printf "%b" "FAILED.\n" ; exit 1 ; }
eject $SOURCECD || { printf "%b" "FAILED.\n" ; exit 1 ; }
Это прекрасно работает с компакт-дисками в формате ISO9660, но не работает (что неудивительно) с компакт-дисками и DVD в формате UDF. У кого-нибудь есть идеи таких инструментов, которые я могу создать, чтобы использовать подобный сценарий для DVD?
3 ответа
Стандартный инструмент
dvd+rw-mediainfo /dev/dvd
Я не ожидал бы, что он будет работать с компакт-дисками, в этом случае нужно разбираться в сценариях:
cdrwtool ... -i
Чтобы проверить файловую систему, я бы попробовал udffsck (он же fsck.udf) или udf_test (из udfct), хотя у меня нет опыта ни с одним из них.
В том месте, где вы делаете isoinfo -l
вам нужно было бы на самом деле mount -t udf -o ro ... && ls -lrt && umount ...
readcd из wodim/cdrecord может обработать любой размер блока мультимедиа и пропустить нечитаемую слабину. вам могут понадобиться драйверы IOUSB от developer.apple.com, чтобы он заработал.
Есть ли у вас источник питания для DVD-привода вне USB-кабеля? DVD-лазер потребляет больше энергии, чем CD.
Также инструменты чтения меток ISO, очевидно, не будут обрабатывать UDF...
dd
это не лучший способ скопировать изображение, и он потерпит неудачу, когда он столкнется с ошибкой чтения.
На данный момент лучшая программа, которую я нашел, это dvdisaster.
Он не только перечитает при обнаружении ошибок,
он может генерировать файл исправления ошибок,
а также производит график сканирования поверхности
(если вы видите, что чтение некоторых областей занимает больше времени, возможно, происходит сбой носителя).
Даже если есть ошибки чтения, если вы создали .ecc
Файл ранее вы можете восстановить изображение (и записать новую копию).
Я все еще держу вывод dvd+rw-mediainfo /dev/dvd
или жеcdrecord -atip dev=/dev/cd
(в зависимости от среды, чтобы получить производителя), плюс .dvdisaster.log
который имеет список ошибок (для отслеживания позже, и чтобы увидеть, есть ли какая-либо корреляция с производителями).
Есть несколько компакт-дисков, которые я пометил как "нечитаемые" несколько лет назад, dvdisaster
удалось восстановить. Работает и на видео DVD (по крайней мере те, которые я записал).
Возможность сканирования поверхности будет зависеть от ваших аппаратных возможностей (более новые накопители должны справиться с этим?). Отлично работает для меня в Ubuntu с дешевой (<$ 20, Optiarc 'DVD RW AD-7260S') внутренней двухслойной горелкой. Хотя в OS X нет успеха, но это больше похоже на системное программное обеспечение, пытающееся захватить контроль над накопителем.