Есть ли какие-либо недостатки от использования, монтируются - связывают вместо символьных ссылок?

Один метод для работы с архивными файлами должен смонтировать их и затем получить доступ к ним как нормальные каталоги. FUSE доступен для большинства нельдов и поддерживает несколько файловых систем для доступа к сжатым файлам прозрачно. Для zip-файлов возможности включают zip предохранителя (AVFS также удобен, но только для чтения).

Например, с zip предохранителя, вот то, как смонтировать архив и скопировать файлы в него.

mkdir tmp
fuse-zip /path/to/zip tmp
rsync -av --exclude='/dir1/dir3/*' dir1 tmp/
fusermount -u tmp; rmdir tmp

56
09.08.2017, 07:54
5 ответов

С mount --bind, дерево каталогов существует в два (или больше) места в иерархии каталогов. Это может вызвать много проблем. Резервные копии и другие копии файла выберут все копии. Становится трудным указать, что Вы хотите скопировать файловую систему: Вы закончите тем, что копировали связывание - смонтированные файлы дважды. Поиски с find, grep -r, locate, и т.д., пересечет все копии, и так далее.

Вы не получите “увеличенной функциональности, и совместимость” со связывают, монтируется. Они похожи на любой другой каталог, который большую часть времени не является желательным поведением. Например, Samba выставляет символьные ссылки как каталоги по умолчанию; нет, ничто для получения с использованием связывания не монтируется. С другой стороны, свяжите монтирование, может быть полезным для представления иерархий каталогов по NFS.

У Вас не будет проблем производительности с, связывают, монтируется. То, что Вы будете иметь, является головными болями администрирования. Свяжите монтируется, имеют их использование, такое как создание дерева каталогов, доступного от chroot или представления каталога, скрытого точкой монтирования (это - обычно переходное использование, в то время как структура каталогов реконструируется). Не используйте их, если у Вас нет потребности.

Только корень может управлять, связывают, монтируется. Они не могут быть перемещены обычными средствами; они блокируют свое местоположение и каталоги предка.

Вообще говоря, если Вы передаете символьную ссылку на команду, действия команды на самой ссылке, если она воздействует на файлы, и на цель ссылки, если она воздействует на содержание файла. Это идет для каталогов также. Это обычно - правильная вещь. Некоторые команды имеют опции рассматривать символьные ссылки по-другому, например ls -L, cp -d, rsync -l. Независимо от того, что Вы пытаетесь сделать, намного более вероятно, что символьные ссылки являются правильным инструментом, чем связывают, монтирует быть правильным инструментом.

62
27.01.2020, 19:33
  • 1
    Спасибо. Я предполагаю, что не рассматривал влияние на резервные копии, копии и поиски файла. Я смог заставить Samba следовать, символьные ссылки добавлением 'следуют за символьными ссылками = yes' в smb.conf, но это действительно идет на компромисс, безопасность в том любом пользователе самбы может выполниться, говорят, 'ln-s / и т.д.' в записываемой папке и получают доступ к системным файлам. Я пытаюсь найти путь вокруг этого. Сообщите мне, знаете ли Вы об одном. –  mrtrujiyo 03.10.2012, 00:24
  • 2
    @mrtrujiyo Для того требования, я думаю, что имело бы смысл выполнять сервер самбы в chroot, и связывать - монтируют каталоги, Вы хотите экспортировать в этом chroot. Удостоверьтесь, что исключили корень chroot от резервных копий и так далее (с этой организацией, только необходимо исключить один каталог верхнего уровня, таким образом, это не большая часть головной боли обслуживания). –  Gilles 'SO- stop being evil' 03.10.2012, 00:31

В дополнение к тому, что @Gilles записал ранее, стоит отметить, что некоторые утилиты могли бы полагать, что связывание - смонтированный каталог было отдельной файловой системой. Это может иметь производительность или последствия функциональности, если программа больше не может предполагать, что то же inode число относится к тому же файлу (который это не делает, если они находятся в различных файловых системах), перемещение не может быть оптимизировано как link-at-target-then-unlink-source и т.д.

14
27.01.2020, 19:33
  • 1
    Спасибо. Я задавался вопросом, как простые утилиты как df и du обработают вычисления размера каталога в файловых системах с, связывают, монтируется. –  mrtrujiyo 03.10.2012, 00:33
  • 2
    По крайней мере, GNU df в моей системе даже не рассматривает, связывают - смонтированные каталоги по умолчанию, но, если спросили а именно, ее рассматривают, поскольку другие монтируются той же файловой системы. (Который, если Вы спрашиваете меня, ожидаемое поведение для инструмента с целью df.) –  a CVn 03.10.2012, 12:11

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

Например, если я захочу сохранить/var/tmp в SD-карте, то я буду использовать связывание, монтируются, так как некоторые программы будут ожидать, что/var/tmp будет действительным каталогом, даже если карта будет удалена.

6
27.01.2020, 19:33

Я попытался привязать mount для решения проблемы при установке некоторых пакетов с помощью pacman (archlinux, подробнее об этом здесь ) в системе, где / var ( а также / home и / usr / local ) были символическими ссылками (между файловыми системами: от SSD к SATA).

Сначала это выглядело великолепно, но, как заметил Жиль, locate всегда давал несколько результатов для одного файла, несмотря на строку PRUNE_BIND_MOUNTS = "yes" в /etc/updatedb.conf.

$ locate \*/findutils-4.4.2 | xargs ls -ldiog
33816600 drwxr-xr-x 12 4096 Dec  3 00:05 /SHARED/LOCALS/Manjaro/src/findutils-4.4.2
33816600 drwxr-xr-x 12 4096 Dec  3 00:05 /usr/local/src/findutils-4.4.2

Копнув немного дальше, я обнаружил, что более сложные привязки монтирования могут быть обрезаны правильно:

$ sudo mount --bind /SHARED/LOCALS/common/ /usr/local/common
$ findmnt | fgrep -n sdb
34:├─/SHARED/LOCALS                  /dev/sdb5           ext4           rw,relatime,data=ordered
35:│ └─/SHARED/LOCALS/Manjaro/common /dev/sdb5[/common]  ext4            rw,relatime,data=ordered
36:├─/usr/local                      /dev/sdb5[/Manjaro] ext4            rw,relatime,data=ordered
37:│ └─/usr/local/common             /dev/sdb5[/common]  ext4            rw,relatime,data=ordered
38:├─/SHARED/HOMES                   /dev/sdb4           ext4            rw,relatime,data=ordered
39:├─/home                           /dev/sdb4[/Manjaro] ext4            rw,relatime,data=ordered
40:├─/SHARED/VARS                    /dev/sdb3           ext4            rw,relatime,data=ordered
41:├─/var                            /dev/sdb3[/Manjaro] ext4            rw,relatime,data=ordered
42:└─/opt                            /dev/sdb5[/opt]     ext4            rw,relatime,data=ordered

$ sudo updatedb --debug-pruning 2>&1 >/dev/null | grep bind
prune_bind_mounts\000
Rebuilding bind_mount_paths:
Matching bind_mount_paths:
Skipping `/SHARED/LOCALS/Manjaro/common': bind mount
Skipping `/usr/local/common': bind mount

$ locate \*/mmedia
/SHARED/LOCALS/common/mmedia

Без параметра PRUNE_BIND_MOUNT я бы получил 3 результата:

$ sudo sed -i '1 s/yes/no/' /etc/updatedb.conf 
$ sudo updatedb --debug-pruning 2>&1 >/dev/null | grep bind
prune_bind_mounts\000
$ locate \*/mmedia
/SHARED/LOCALS/Manjaro/common/mmedia
/SHARED/LOCALS/common/mmedia
/usr/local/common/mmedia
$ sudo sed -i '1 s/no/yes/' /etc/updatedb.conf 

Другая проблема с привязками:

. Конечно, можно вручную добавить привязку (mounpoint или target) к PRUNEPATHS в /etc/updatedb.conf .

Кроме того, точка монтирования и различные команды или функции stat могут использоваться в инструментах для улучшения обхода файловой системы , как предлагается здесь

1
27.01.2020, 19:33

Я использую это так:

/mnt/sdb1/.user_cache/User1_cache /home/User1/.cache none bind 0 0
/mnt/sdb1/.user_cache/User2_cache /home/User2/.cache none bind 0 0

Я делаю это, чтобы уменьшить количество операций записи на ssd, который монтируется с помощью defaults,relatime,data=ordered,commit=600 0 1также папки symlinkedна мой ~, которые не являются критическими для ввода-вывода.

0
17.02.2020, 11:57

Теги

Похожие вопросы