Tôi đã thử gắn kết liên kết để khắc phục sự cố khi cài đặt một số gói với pacman
(archlinux, thông tin thêm về vấn đề này ở đây ) trên một hệ thống trong đó /var
(cũng như /home
và /usr/local
) là các liên kết tượng trưng (trên các hệ thống tệp: SSD sang SATA).
Ban đầu nó trông rất tuyệt, nhưng, như Gilles đã chỉ ra, locate
luôn đưa ra nhiều kết quả cho một tệp, mặc dù có PRUNE_BIND_MOUNTS = "yes"
dòng trong /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
Đi sâu hơn một chút, tôi thấy rằng các liên kết gắn kết phức tạp hơn có thể được cắt tỉa chính xác:
$ 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
Nếu không có tùy chọn PRUNE_BIND_MOUNT, tôi sẽ có 3 kết quả:
$ 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
Một vấn đề khác với liên kết gắn kết:
Tất nhiên, người ta có thể tự thêm các liên kết gắn kết (mounpoint hoặc đích)
PRUNEPATHS
vào /etc/updatedb.conf
.
Ngoài ra, mountpoint
và các stat
lệnh hoặc chức năng khác nhau có thể được sử dụng trong các công cụ để cải thiện truyền tải hệ thống tệp như đề xuất ở đây