Существует ли предел hardlinks для одного файла?

Если Ваш каталог верхнего уровня называют images, затем выполненный rm -r images/*. Это использует оператор шарика оболочки * работать rm -r на каждом файле или каталоге в images.

24
10.01.2011, 18:38
3 ответа

Posix требует, чтобы операционная система поняла понятие жестких ссылок, но не, что жесткие ссылки могут на самом деле использоваться при каком-то конкретном обстоятельстве. Можно узнать, сколько жестких ссылок разрешено в конкретном местоположении (это может варьироваться типом файловой системы) путем вызова pathconf(filename, _PC_LINK_MAX). Минимальный предел (_POSIX_LINK_MAX) 8, но это довольно бессмысленно как link() могут сообщить много других ошибок так или иначе (отклоненное разрешение, полный диск, …).

stat структура хранит число каналов в поле типа nlink_t, таким образом, тип этого поля дает верхний предел Вашей системы. Но существует хороший шанс, Вы никогда не будете мочь достигнуть этого далеко: распространено иметь 32-разрядное nlink_t но только 16 битов во многих файловых системах (быстрый grep в источнике Linux показывает, что расширение [234], NTFS, UFS и XFS использует 16-разрядные числа каналов в структурах данных ядра).

16
27.01.2020, 19:41
  • 1
    Как дополнение: BTRFS, кажется, использует число каналов на 8 битов. –  Maciej Piechotka 03.01.2012, 19:15
  • 2
    @Rather, 8-разрядное число каналов для жестких ссылок в том же каталоге, но 32-разрядное количество всего, согласно этому сообщению в блоге/ –  Gilles 'SO- stop being evil' 15.07.2016, 17:00

Это - зависимый файловой системы.

предел ext2/3/4 является ссылками 65k

исходная строка ext4 643, struct ext4_inode -> __le16 i_links_count

11
27.01.2020, 19:41
  • 1
    Фактический предел 65534. Последняя встречная запись используется для переходного процесса в переименовывании () системный вызов. –  Joshua 11.01.2011, 02:03
  • 2
    Еще меньше (найденный в том же ext4.h):/* Максимальное количество ссылок на файл */#define EXT4_LINK_MAX 65000 –  PoltoS 24.04.2012, 01:02

Рассмотрение формата диска ext3 inode структуры в источниках ядра Linux (*include/linux/ext3_fs.h*), который перечисляет количество ссылок, как являющееся числом на 16 битов

struct ext3_inode {
    ... snip ...
    __le16  i_links_count;  /* Links count */

}

Я предполагаю, что означает, что ext3 файловая система может иметь до 65 535 ссылок.

Я не проверил значения на другие файловые системы.

10
27.01.2020, 19:41
  • 1
    ext4 искусственно ограничивает его –  Alexander - Reinstate Monica 24.03.2018, 02:22

Теги

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