Монтирование папок в Linux, кроссплатформное переносное рабочее место на USB-флэшке

При использовании нескольких операционных систем или переходе с одной на другую хочется использовать одни и те же настройки для общих приложений. Например иметь один и те же параметры, закладки и кэш в Opera под Linux и Windows. Порой удобнее не прописывать никаких путей и не делать симлинков в каждой ОС, а воспользоваться возможностью Linux монтировать одни папки поверх других. Для этого под рутом используется команда mount --bind olddir newdir. При этом старое содержимое папки скрывается.

Вот так я подключаю конфигурацию Apache, настройки и базу MySQL и запускаю их с новыми параметрами хранящимися на отдельной партиции:
killall apache
mysqladmin shutdown
mount --bind ./var/www /var/www
mount --bind ./var/log/apache /var/log/apache
mount --bind ./var/log/mysql /var/log/mysql
mount --bind ./var/lib/mysql /var/lib/mysql
mount --bind ./etc/hosts /etc/hosts
mount --bind ./etc/apache/vhosts.conf /etc/apache/vhosts.conf
mount --bind ./etc/mysql/my.cnf /etc/mysql/my.cnf
chmod 755 /etc/mysql/my.cnf
apache
mysqld

Команды записаны в файл mnt.sh, запускаю его перед работой с вебом.

А вот так отмотирую и отключаю веб-дела:
killall apache
mysqladmin shutdown
umount /var/www
umount /var/log/apache
umount /var/log/mysql
umount /var/lib/mysql
umount /etc/hosts
umount /etc/apache/vhosts.conf
umount /etc/mysql/my.cnf

Эти команды прописаны у меня в файле umnt.sh.

Как видно, структура папок на расшаренной партиции повторяет часть структуры папок в Linux, а файлы mnt.sh и umnt.sh лежат в каталоге верхнего уровня и ссылаются на все монтируемые папки с помощью относительных путей, что позволяет переносить расшаренные данные не меняя путей в скриптах монтирования/отмонтирования.

Отдельного разговора заслуживает монтирование настроек программ прямо с USB-флэшки. Это позволяет создать переносную кроссплатформную рабочую среду. Можно например набить флэшку портабельными приложениями типа FireFox/Opera, Miranda, AbiWord, Portable OpenOffice и т.д. и грузить их прямо с флэшки под Windows, а в Linux монтировать профили этих приложений в соответствующие места файловой системы, чтобы Linux-версии использовали параметры с флэшки. UniformServer под Windows добавить на флэшку по-вкусу.

При создании такой все-своё-ношу-с-собой-чудо-флэшки под Windows нужно обратить внимание на то, чтобы она не стала рассадником вирусов — при запуске программы с флэшки на заразном компьютере есть шанс унести инфекцию с собой. Также нужно помнить, что USB 1.1 тормозит :(

С патчем unionfs к ядру Linux умеет монтировать одну папку в другую с объединением файлов в общую иерархию, но это уже другая история.

Кстати NTFS поддерживает символические ссылки на директории с других дисков. Так что в Windows тоже монтировать папки с профилями.

Смонтировать например настройки Opera под Linux можно командой:
mount --bind ./opera ~/.opera

Это работает т.к. ~ всегда указывает на домашний каталог пользователя.

Под Windows, чтоб не зашивать пути в скрипт, надо будет как-то узнать путь к домашнему каталогу текущего пользователя(?), переименовать там профиль оперы и сделать симлинк на флэшку. При "отмонтировании" удалить симлинк и переименовать старый профиль обратно.

В Windows есть %USERPROFILE%

Для полноты картины. Под Windows симлинки делаются командой mklink, а буквонезависимость можно сделать с помощью subst как в UniformServer.

>killall apache Плохой вкус... apachectl на что?

Это не вкус, а незнание нужных заклинаний. Спасибо! Это ещё цветочки, раньше вообще делал killall mysqld :)



а еще можно нужные команды поместить в /etc/rc.local (до команды exit 0), и тогда они будут запускаться сместе со входом в систему))) При том даже если от суперюзера надо енто сделать. у меня вот так:
================
username@ULaptop:~$ cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
#### монтирование в /home/ftp/pub/
sudo mount --bind /home/username/ubuntu /home/ftp/pub/
#####
exit 0
============
замечательно то, что енто работает))

ой! как-то знак комментария (решетка) превратился в циферки..((

Формат с # подправил.

Если под рутом не нужно, то лучше писать в конец ~/.bashrc, чтоб только для этого пользователя работало.

Post new comment

The content of this field is kept private and will not be shown publicly.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Copy the characters (all lower case) from the image.