Привет всем
Вопрос:
Как реализовать(запрограммировать) работу с файловыми системами?
Начал и столкнулся с проблемой, что сам хоть все объекты в которых храниться файловая система имеют универсальный интерфейс взаимодействия. Внутри они должны быть реализованы по разному.
В linux можно подключать(монтировать) различные файловые системы. Причём у каждой файловой системы свое количество параметров и "папок" и даже последовательность исполнения комманд (+ их количество).
Примеры:
- Простой пример:
mount -t ntfs /dev/sda1 /mnt/win_xp
- Монтирование /lxc/shared:
mount --bind /lxc/shared /lxc/shared
mount --make-unbindable /lxc/shared
mount --make-shared /lxc/shared
- Принимает 2-е директории а не одну:
mount -t overlayfs -o rw,lowerdir=/low-layer,upperdir=/hilayer overlayfs /overlayfs
find /overlayfs -lname '(overlay-whiteout)' -exec rm -rf {} \;
По сути дела у каждой файловой системы есть два состояния:
- смонтирована
- не смонтирована
И над каждой можно провести ограничесное количество операций:
- mount()
- unmount()
- Проверить смонтирована
- Remove (предварительно размонтировав)
ЗЫ:
Пишу на Го. Вот что получилось:
play.golang.org/p/Ri5yAqsLu7
Конечно до работы с любой файловой системой далеко =(