-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbackup-http
executable file
·55 lines (44 loc) · 1016 Bytes
/
backup-http
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/bin/bash
INFO="
Use 'wget' to download a snapshot of a website.
Usage:
backup-http <http://domain/path>
"
if [ -z "$1" ]; then
echo "$INFO" 1>&2
exit 1
fi
TMPDIR=$(mktemp -d) || exit 1
trap "rm -rf $TMPDIR" EXIT
PROTOCOL=http
URL="$1"
case "$1" in
http://*) URL=${1:7} ;;
https://*) PROTOCOL=https; URL=${1:8} ;;
esac
DOMAIN="${URL%%/*}"
SPATH="${URL:${#DOMAIN}}"
SPATH="${SPATH%/*}"
SPATH="${SPATH:-/}"
OUTF="$DOMAIN$(echo ${SPATH%/} | tr / -)"
OUTF="$OUTF-$(date '+%Y-%m-%d').tgz"
if [ -e "$OUTF" ]; then
echo "File '$OUTF' already exits!" 1>&2
exit 1
fi
( \
cd "$TMPDIR" && \
wget --no-verbose -r -p -E -H -k -nH "-D$DOMAIN" \
"-I$SPATH" "$PROTOCOL://$DOMAIN$SPATH" \
)
WGETRET=$?
if [ $WGETRET -ne 0 -a $WGETRET -ne 8 ]; then
echo "Wget returned error code $WGETRET" 1>&2
exit 1
fi
( cd "$TMPDIR" && tar -c * ) | gzip > "$OUTF" || exit 1
if [ $WGETRET -ne 0 ]; then
echo "Warning: Wget returned error code $WGETRET" 1>&2
exit 1
fi
exit 0