Если у Вас есть a readlink
это поддерживает -e
переключатель для канонизации пути, я предлагаю, чтобы Вы препятствовали тому, чтобы Ваши пользователи использовали mv
в целом и запись Ваше собственное mv
как замена. Что-то вроде этого, возможно:
#!/bin/bash
[ $# -ne 2 ] && echo "Only a two-argument mv is allowed" && exit 1
src="$1"
dst="$2"
srcdir="$(readlink -e "$(dirname "$src")")"
dstdir="$(readlink -e "$(dirname "$dst")")"
[ "$srcdir" != "$dstdir ] && echo "Cross-directory mv is forbidden" && exit 2
[ "$(basename "$src")" = "$(basename "$dst")" ] && echo "Source and destination are the same. Nothing to do." && exit 3
cp -p "$src" "$dst" && rm -f "$src"
Обратите внимание, что это (очевидно), заставит inode число перемещенного файла изменяться в отличие от постоянного клиента mv
.
ЕСЛИ логические тома находятся в разных группах томов, и вы хотите их объединить, используйте команду vgmerge
:
Сначала деактивируйте группу томов, которая будет объединена в другую:
[root@host ~]# vgchange -a n vg_to_be_merged
После этого проверьте, нет ли несогласованности, которая помешает вам объединиться:
[root@host ~]# vgmerge -t -v dest_vg vg_to_be_merged
Теперь выполните объединение по-настоящему:
[root@host ~]# vgmerge -v dest_vg vg_to_be_merged
Checking for volume group "dest_vg"
Checking for volume group "vg_to_be_merged"
Archiving volume group "vg_to_be_merged" metadata (seqno 2).
Archiving volume group "dest_vg" metadata (seqno 13).
Writing out updated volume group
Creating volume group backup "/etc/lvm/backup/dest_vg" (seqno 14).
Volume group "vg_to_be_merged" successfully merged into "dest_vg"
Однако, слияние томов LVM не будет иметь никакого волшебного трюка, поскольку поверх них есть файловые системы, и потребуется много размышлений с перемещением данных и изменением размера.
Дополнительная литература: