Поиск по этому блогу

суббота, 6 мая 2017 г.

Монтирование нескольких каталогов в одну точку

Периодически возникает необходимость использования файлов модуля в каталоге с основной программой.
До этого использовал симлинки или mount -o bind.
Но такой способ оказался крайне неудобным, поскольку файлов в модуле много, они все сильно вложенные, так что приходится прописывать каждый файл... В общем, геморройно это.
Сегодня нашёл на просторах интернета интересный способ монтирования в одну точку и написал для этого такой скриптик, назовём его union_mount:

#!/usr/bin/env bash

# Union mount two directories into one mount point

dir1=$1
dir2=$2
result_mount_point=$3

if [[ (-z $dir1) || (-z $dir2) || (-z $result_mount_point) ]]; then
echo "Usage: $0 dir1 dir2 result_mount_point"
exit 1;
fi

sudo mount -t aufs -o br=${dir1}=rw:${dir2}=rw none $result_mount_point

exit 0;

Он разработан для двух каталогов, но ничто не мешает добавить сколько нужно.

Как он работает. Допустим, есть каталог A: /path1/Afile.txt, каталог B: /path2/Bfile.txt и каталог C: /path3 (рабочий каталог проекта)
Вызываем union_mount /path1 /path2 /path3
В результате получаем: /path3/{Afile.txt,Bfile.txt}, т.е., содержимое точки монтирования не "перетирается" последним смонтированным, а объединяется с предыдущим.

Надеюсь, идея понятна.

Комментариев нет:

Отправить комментарий