fixed option -p; better infos on dry run
This commit is contained in:
@@ -49,34 +49,46 @@ EOF
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
||||
BTRFS_VOLUMES=${BTRFS_VOLUMES:-$(awk '!/^#/ && $3=="btrfs" {print $2}' /etc/fstab)}
|
||||
TMP_MNT=${TMP_MNT:-/var/tmp/btrfs-backup}
|
||||
if test -n "${vols[*]}"; then
|
||||
BTRFS_VOLUMES="${vols[*]}"
|
||||
fi
|
||||
|
||||
test -d "${TMP_MNT}" || mkdir -p "${TMP_MNT}"
|
||||
for fs in ${BTRFS_VOLUMES}; do
|
||||
device=$(mount | awk '$3=="'$fs'" && $5=="btrfs" {print $1}')
|
||||
subvol=$(mount | awk '$3=="'$fs'" && $5=="btrfs" {split(substr($6, 2, length($6)-2), res, ","); for (r in res) {if (res[r]~/^subvol=/) {sub(/^subvol=/,"" , res[r]); print res[r]}}}')
|
||||
if test -n "$subvol"; then
|
||||
name=${subvol}
|
||||
if test "$subvol" = "/@"; then
|
||||
name=${subvol}
|
||||
else
|
||||
name=${subvol}-
|
||||
fi
|
||||
else
|
||||
if test "$fs" = "/"; then
|
||||
name="@root"
|
||||
name="/"
|
||||
else
|
||||
name=${fs#/}
|
||||
name=${name%/}
|
||||
name=${name//\//-}
|
||||
name=/${name//\//-}-
|
||||
fi
|
||||
fi
|
||||
target="${name}-snapshot-$(date +%Y-%m-%d-%H-%M)"
|
||||
if test $dryrun -eq 1; then
|
||||
echo btrfs subvolume snapshot "${TMP_MNT}${subvol}" "${TMP_MNT}/${target}"
|
||||
else
|
||||
if mount | grep -q " on $TMP_MNT type "; then
|
||||
target="${name}snapshot-$(date +%Y-%m-%d-%H-%M)"
|
||||
if test -n "$device"; then
|
||||
if test $dryrun -eq 1; then
|
||||
echo -e "→ \e[1mbackup ${subvol:+subvol $subvol of }$fs on $device\e[0m"
|
||||
echo " " mount "$device" "$TMP_MNT"
|
||||
echo " " btrfs subvolume snapshot "${TMP_MNT}${subvol}" "${TMP_MNT}${target}"
|
||||
echo " " umount "$TMP_MNT"
|
||||
else
|
||||
if mount | grep -q " on $TMP_MNT type "; then
|
||||
sudo umount "$TMP_MNT"
|
||||
fi
|
||||
sudo mount "$device" "$TMP_MNT"
|
||||
sudo btrfs subvolume snapshot "${TMP_MNT}${subvol}" "${TMP_MNT}${target}"
|
||||
sudo umount "$TMP_MNT"
|
||||
fi
|
||||
sudo mount "$device" "$TMP_MNT"
|
||||
sudo btrfs subvolume snapshot "${TMP_MNT}${subvol}" "${TMP_MNT}/${target}"
|
||||
sudo umount "$TMP_MNT"
|
||||
else
|
||||
echo "ERROR: no device found for $fs" 1>&2
|
||||
exit 2
|
||||
fi
|
||||
done
|
||||
|
Reference in New Issue
Block a user