Use Btrfs snapshots for chroot copies, when available
This is much faster than using Rsync to clone. Rsync stays available when the chroots are not on a Btrfs.
This commit is contained in:
parent
174ff59dba
commit
0af05a48ab
|
@ -45,6 +45,7 @@ if ${clean_first} || [ ! -d "${chroots}/${repo}-${arch}" ]; then
|
|||
exec 9>${copy}.lock
|
||||
flock 9
|
||||
|
||||
{ type -P btrfs && btrfs subvolume delete ${copy}; } &>/dev/null
|
||||
rm -rf ${copy}
|
||||
done
|
||||
exec 9>&-
|
||||
|
|
|
@ -127,8 +127,18 @@ if [ ! -d "$copydir" -o "$clean_first" -eq "1" ]; then
|
|||
fi
|
||||
|
||||
echo -n 'creating clean working copy...'
|
||||
mkdir -p "$copydir"
|
||||
rsync -a --delete -q -W -x "$chrootdir/root/" "$copydir"
|
||||
use_rsync=false
|
||||
if type -P btrfs >/dev/null; then
|
||||
[ -d $copydir ] && btrfs subvolume delete "$copydir" &>/dev/null
|
||||
btrfs subvolume snapshot "$chrootdir/root" "$copydir" &>/dev/null || use_rsync=true
|
||||
else
|
||||
use_rsync=true
|
||||
fi
|
||||
|
||||
if $use_rsync; then
|
||||
mkdir -p "$copydir"
|
||||
rsync -a --delete -q -W -x "$chrootdir/root/" "$copydir"
|
||||
fi
|
||||
echo 'done'
|
||||
|
||||
# Drop the read lock again
|
||||
|
|
|
@ -181,6 +181,10 @@ else
|
|||
exit 1
|
||||
fi
|
||||
|
||||
if { type -P btrfs && btrfs subvolume create "${working_dir}"; } &>/dev/null; then
|
||||
chmod 0755 "${working_dir}"
|
||||
fi
|
||||
|
||||
mkdir -p "${working_dir}/var/lib/pacman/sync"
|
||||
mkdir -p "${working_dir}/etc/"
|
||||
|
||||
|
|
Loading…
Reference in New Issue