]>
Commit | Line | Data |
---|---|---|
4108a92c MF |
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} | |
2b2f7f17 | 10 | -n <volume name> Defaults to volume on disk |
4108a92c MF |
11 | EOF |
12 | exit ${1:-0} | |
13 | } | |
14 | ||
15 | dev=/dev/cdrom | |
16 | out=${PWD} | |
2b2f7f17 | 17 | vol= |
4108a92c | 18 | |
2b2f7f17 | 19 | eval set -- `getopt -- hi:n:o: "$@"` |
4108a92c MF |
20 | while [[ -n $1 ]] ; do |
21 | case $1 in | |
22 | -h) usage;; | |
23 | -i) dev=$2; shift 2;; | |
24 | -o) out=$2; shift 2;; | |
2b2f7f17 | 25 | -n) vol=$2; shift 2;; |
4108a92c MF |
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 | |
2b2f7f17 | 37 | Volume=${vol} # -V |
4108a92c MF |
38 | Volume_Set= # -volset |
39 | ||
2b2f7f17 MF |
40 | if [[ -z ${Volume} ]] ; then |
41 | info=$(iso-info ${dev}) || exit 1 | |
4108a92c | 42 | |
2b2f7f17 MF |
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 | |
4108a92c MF |
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 | } | |
15a28e34 MF |
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 | |
4108a92c MF |
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 |