]> git.wh0rd.org - home.git/blob - .bin/backup-dvd
ignore firefox crashes
[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 e dvdbackup -M -i ${dev} -o "${out}" -n "${Volume}"
68 e mkisofs -quiet -dvd-video \
69 -A "${Application}" \
70 -p "${Preparer}" \
71 -publisher "${Publisher}" \
72 -sysid "${System}" \
73 -V "${Volume}" \
74 -volset "${Volume_Set}" \
75 -o "${out}/${Volume}.iso" "${Volume}"
76 du -h "${out}/${Volume}.iso"
77
78 exec eject