blob: 9b8ff1bac412c0ad93025022a0c651fa7374976d (
plain)
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
|
#!/bin/bash
set -e
set -o pipefail
image=$1
[ -e "$image" ]
shift
base_dir=$1
[ "$base_dir" ]
shift
source_files=("$@")
get_fsdev()
{
read < <(kpartx -rav "$image")
set -- $REPLY
if [[ $* == 'add map '*' '* ]]
then
fsdev=/dev/mapper/$3
else
echo "Error: kpartx: $REPLY" >&2
exit 1
fi
}
cleanup()
{
umount -v /mnt
dev=$(losetup -j "$image" -nO NAME)
[ "$dev" ] || exit 0
kpartx -d "$dev" || true
losetup -d "$dev" || true
}
get_fsdev
mount -v -r "$fsdev" /mnt
trap cleanup EXIT
source_dir=/mnt/$base_dir
cp -v --no-preserve=mode -t . -- "${source_files[@]/#/$source_dir/}"
|