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
56
57
58
59
60
61
62
63
64
65
66
67
|
#!/bin/sh
PUBLISH_BASE_DEF=/srv/ec2-images
TEMP_D=""
set -e
cleanup() {
[ -n "${TEMP_D}" ] || rm -Rf "${TEMP_D}"
}
Usage() {
cat <<EOF
Usage: ${0##*/} output
create a tarball containing a fake publish root in output
publish-root is from \${PUBLISH_BASE} (default=${PUBLISH_BASE_DEF})
EOF
}
[ "$1" = "-h" -o "$1" = "--help" ] && { Usage; exit 0; }
[ $# -eq 1 ] || { Usage 1>&2; exit 1; }
base=${PUBLISH_BASE:-${PUBLISH_BASE_DEF}}
TEMP_D=$(mktemp -d)
trap cleanup EXIT
date=$(date -R)
listd=${TEMP_D}/list
mkdir -p "${listd}"
listfile=${listd}/list.all
real_files=${listd}/list.real
fake_files=${listd}/list.fake
img_tar=${TEMP_D}/img.tar.gz
build_tar=${TEMP_D}/build.tar.gz
dd if=/dev/zero of=${TEMP_D}/image.img obs=1024 seek=1024 count=0
mke2fs -jF "${TEMP_D}/image.img"
echo "${date}" > "${TEMP_D}/vmlinux-image"
tar -C "${TEMP_D}" -Sczf - "image.img" "vmlinux-image" > "${build_tar}"
tar -C "${TEMP_D}" -Sczf - "image.img" > "${img_tar}"
rm "${TEMP_D}/image.img" "${TEMP_D}/vmlinux-image"
regex="([.]tar|vmlinuz|initrd|floppy|loader|[.]img[.]gz|.img|[.]vmdk|log.stdout.stderr)"
startd=${PWD}
cd "${base}"
find * -type f -o -type l > "${listfile}"
egrep -v "${regex}" "${listfile}" > "${real_files}"
egrep "${regex}" "${listfile}" > "${fake_files}"
tar -cpf - --files-from "${real_files}" | tar -C "${TEMP_D}" -xf -
cd "${TEMP_D}"
while read file; do
[ -d "${file%/*}" ] || mkdir -p "${file%/*}"
case "${file}" in
*.img.tar.gz) ln "${img_tar}" "${file}";;
*.tar.gz) ln "${build_tar}" "${file}";;
*) echo "${date}: ${file}" > "${file}";;
esac
done < "${fake_files}"
#rm "${listfile}" "${real_files}" "${fake_files}"
rm "${img_tar}" "${build_tar}"
cd "${startd}"
tar -C "${TEMP_D}" -cvzf "${1:-out.tar.gz}" "."
|