2017-02-13 14:01:54 -05:00
|
|
|
#!/usr/bin/env bash
|
2014-08-05 14:07:56 -04:00
|
|
|
set -e
|
|
|
|
|
|
|
|
dir="$1"
|
|
|
|
|
|
|
|
if [ -z "$dir" ]; then
|
|
|
|
{
|
|
|
|
echo 'This script is for destroying old /var/lib/docker directories more safely than'
|
|
|
|
echo ' "rm -rf", which can cause data loss or other serious issues.'
|
|
|
|
echo
|
|
|
|
echo "usage: $0 directory"
|
|
|
|
echo " ie: $0 /var/lib/docker"
|
|
|
|
} >&2
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$(id -u)" != 0 ]; then
|
|
|
|
echo >&2 "error: $0 must be run as root"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ ! -d "$dir" ]; then
|
|
|
|
echo >&2 "error: $dir is not a directory"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
dir="$(readlink -f "$dir")"
|
|
|
|
|
|
|
|
echo
|
|
|
|
echo "Nuking $dir ..."
|
|
|
|
echo ' (if this is wrong, press Ctrl+C NOW!)'
|
|
|
|
echo
|
|
|
|
|
2020-03-02 22:27:49 -05:00
|
|
|
(
|
|
|
|
set -x
|
|
|
|
sleep 10
|
|
|
|
)
|
2014-08-05 14:07:56 -04:00
|
|
|
echo
|
|
|
|
|
|
|
|
dir_in_dir() {
|
|
|
|
inner="$1"
|
|
|
|
outer="$2"
|
|
|
|
[ "${inner#$outer}" != "$inner" ]
|
|
|
|
}
|
|
|
|
|
|
|
|
# let's start by unmounting any submounts in $dir
|
|
|
|
# (like -v /home:... for example - DON'T DELETE MY HOME DIRECTORY BRU!)
|
|
|
|
for mount in $(awk '{ print $5 }' /proc/self/mountinfo); do
|
|
|
|
mount="$(readlink -f "$mount" || true)"
|
2016-10-28 15:41:40 -04:00
|
|
|
if [ "$dir" != "$mount" ] && dir_in_dir "$mount" "$dir"; then
|
2020-03-02 22:27:49 -05:00
|
|
|
(
|
|
|
|
set -x
|
|
|
|
umount -f "$mount"
|
|
|
|
)
|
2014-08-05 14:07:56 -04:00
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
# now, let's go destroy individual btrfs subvolumes, if any exist
|
2014-12-12 13:51:12 -05:00
|
|
|
if command -v btrfs > /dev/null 2>&1; then
|
2016-07-28 14:25:20 -04:00
|
|
|
# Find btrfs subvolumes under $dir checking for inode 256
|
|
|
|
# Source: http://stackoverflow.com/a/32865333
|
|
|
|
for subvol in $(find "$dir" -type d -inum 256 | sort -r); do
|
2016-10-28 15:41:40 -04:00
|
|
|
if [ "$dir" != "$subvol" ]; then
|
2021-04-07 21:57:15 -04:00
|
|
|
if [ "$(stat -f --format=%T $subvol)" == "btrfs" ]; then
|
|
|
|
(
|
|
|
|
set -x
|
|
|
|
btrfs subvolume delete "$subvol"
|
|
|
|
)
|
|
|
|
fi
|
2016-10-28 15:41:40 -04:00
|
|
|
fi
|
2014-08-05 14:07:56 -04:00
|
|
|
done
|
|
|
|
fi
|
|
|
|
|
|
|
|
# finally, DESTROY ALL THINGS
|
2020-03-02 22:27:49 -05:00
|
|
|
(
|
|
|
|
shopt -s dotglob
|
|
|
|
set -x
|
|
|
|
rm -rf "$dir"/*
|
|
|
|
)
|