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

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

  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 ответ1

0

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

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

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

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

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

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .