Как смонтировать две отдельные папки в одну?


1

Я пытаюсь подключить две папки из двух разных мест к одной папке, из которой программное обеспечение радио воспроизводит музыку.

Это то, что я сделал до сих пор:

  1. В /etc/fstabя поставил следующие две строки:

    /usr/local/centovacast/var/vhosts/adminaw/var/spool/media   /mnt/mounted-drive/awmusic_songs/   none   bind
    /usr/local/centovacast/var/vhosts/adminaw/var/spool/media   /home/centos/awmusic_songs_1/   none   bind
    
  2. Затем я выполнил следующие две команды:

    mount --bind /mnt/mounted-drive/awmusic_songs/ /usr/local/centovacast/var/vhosts/adminaw/var/spool/media
    mount --bind /home/centos/awmusic_songs_1/ /usr/local/centovacast/var/vhosts/adminaw/var/spool/media
    

Таким образом, в основном программное обеспечение для радио читает музыку /usr/local/centovacast/var/vhosts/adminaw/var/spool/media, а песни находятся в папках awmusic_songsи awmusic_songs_1.

После того, как я сделал то, что я описал выше, я вижу только файлы (песни) из второй папки ( awmusic_songs_1).

Возможно ли то, что я пытаюсь достичь? Если да, может кто-нибудь помочь мне?

Ответы:


1

Это возможно.

Примечание: мой опыт в этой области очень ограничен; следующий ответ основан главным образом на веб-исследованиях, я сам не проверял это на практике.

В общем, что бы вы ни монтировали в a /foo/bar/mountpoint, оно полностью покрывает предыдущее содержимое mountpoint(хотя программы сохраняют свои уже полученные дескрипторы для теперь «скрытых» файлов, они все еще действительны). Ваше второе крепление связывало именно это.

Хитрость заключается в использовании типа монтирования, который объединяет два или более каталогов в один. Общая концепция называется объединением монтирования . Есть несколько реализаций:

В общем случае объединение может быть смонтировано над одним из объединенных каталогов или с совершенно другой (предпочтительно пустой) точкой монтирования. На мой взгляд, последнее является более элегантным решением.

Вот некоторые аспекты, которые вы можете рассмотреть при выборе типа монтирования для ваших нужд:

  • Некоторые из них доступны только как FUSE , некоторые объединены с ядром Linux (в этом случае они также могут иметь реализации FUSE). Проверьте эти проблемы безопасности относительно FUSE.
  • Что происходит, когда вы изменяете один из комбинированных каталогов напрямую? ( пример вопроса ).
  • Что происходит, когда вы добавляете новый файл в объединение. Mhddfs выглядит многообещающим для объединения каталогов, содержащих медиа-файлы. Проверьте эту статью , она говорит:

    Когда вы создадите новый файл в виртуальной файловой системе, mhddfsпосмотрите на свободное место, которое осталось на каждом из дисков. Если на первом диске достаточно свободного места, файл будет создан на этом первом диске. В противном случае, если на этом диске недостаточно места (меньше, чем указано mlimitпараметром mhddfs, который по умолчанию равен 4 ГБ), вместо него будет использоваться второй диск. Если на этом диске также недостаточно места, будет использован третий диск. Если на каждом диске отдельно меньше mlimitсвободного места, для новых файлов будет выбран диск с наибольшим количеством свободного места.

    Это даже больше, чем это; если на определенном диске заканчивается свободное место в середине записи (предположим, вы пытались создать на нем очень большой файл), процесс записи не будет завершен неудачей; mhddfsпросто перенесет уже записанные данные на другой диск (на котором есть больше свободного места) и продолжит запись там. Все это совершенно прозрачно для приложения, которое записывает файл (он даже не узнает, что что-то случилось).

    Я не знаю, как другие реализации справляются с этим. Я предполагаю, что они изначально были созданы, чтобы позволить объединить файловую систему с возможностью записи с доступной только для чтения (как в этом вопросе ), поэтому любая из них может быть не такой гибкой, как mhddfs, когда дело доходит до (пере) распространения файлов. Я не уверен, хотя, вы можете проверить это самостоятельно.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.