]> git.wh0rd.org - home.git/blob - .bin/backup-dvd
fall back to main feature
[home.git] / .bin / backup-dvd
1 #!/bin/bash
2
3 usage() {
4 cat <<-EOF
5 backup-dvd [options]
6
7 Options:
8 -i <input dev> Defaults to ${dev}
9 -o <output dir> Defaults to ${out}
10 -n <volume name> Defaults to volume on disk
11 EOF
12 exit ${1:-0}
13 }
14
15 dev=/dev/cdrom
16 out=${PWD}
17 vol=
18
19 eval set -- `getopt -- hi:n:o: "$@"`
20 while [[ -n $1 ]] ; do
21 case $1 in
22 -h) usage;;
23 -i) dev=$2; shift 2;;
24 -o) out=$2; shift 2;;
25 -n) vol=$2; shift 2;;
26 --) shift; break;;
27 -*) usage 1;;
28 *) usage 2; break;;
29 esac
30 done
31
32 # iso-info mkisofs
33 Application= # -A
34 Preparer= # -p
35 Publisher= # -publisher
36 System= # -sysid
37 Volume=${vol} # -V
38 Volume_Set= # -volset
39
40 if [[ -z ${Volume} ]] ; then
41 info=$(iso-info ${dev}) || exit 1
42
43 eval $(echo "${info}" | awk -F: '
44 (NF > 1 && $1 !~ /image/) {
45 sub(/ *$/, "", $1);
46 sub(/ /, "_", $1);
47 sub(/^ */, "", $2);
48 print $1 "=\"" $2 "\"";
49 }')
50 fi
51
52 if [[ -z ${Volume} ]] ; then
53 echo "Unable to parse Volume out of ISO"
54 iso-info ${dev}
55 fi
56
57 echo "Backing up: ${Volume}"
58
59 e() {
60 for a ; do
61 [[ ${a} == *" "* || ${#a} == 0 ]] && fmt='"%s"' || fmt='%s'
62 printf "${fmt} " "${a}"
63 done
64 echo
65 "$@"
66 }
67 opts=(
68 -i ${dev}
69 -o "${out}"
70 -n "${Volume}"
71 )
72 if ! e dvdbackup -M "${opts[@]}" ; then
73 e dvdbackup -F "${opts[@]}" || exit 1
74 fi
75 e mkisofs -quiet -dvd-video \
76 -A "${Application}" \
77 -p "${Preparer}" \
78 -publisher "${Publisher}" \
79 -sysid "${System}" \
80 -V "${Volume}" \
81 -volset "${Volume_Set}" \
82 -o "${out}/${Volume}.iso" "${Volume}"
83 du -h "${out}/${Volume}.iso"
84
85 exec eject