Как найти все жесткие ссылки (hard link) в каталоге в Linux

  • Автор темы HHIDE_DUMP
  • Дата начала
  • Просмотры 604
  • На форуме работает ручное одобрение пользователей. Это значит, что, если Ваша причина регистрации не соответствует тематике форума, а также Вы используете временную почту, Ваша учётная запись будет отклонена без возможности повторной регистрации. В дальнейшем - пожизненная блокировка обоих аккаунтов за создание мультиаккаунта.
  • Мы обновили Tor зеркало до v3!
    Для входа используйте следующий url: darkv3nw2...bzad.onion/
  • Мы вновь вернули telegram чат форуму, вступайте, общайтесь, задавайте любые вопросы как администрации, так и пользователям!
    Ссылка: https://t.me/chat_dark_time

HHIDE_DUMP

Гость
H

HHIDE_DUMP

Гость
У меня есть файл с именем /etc/passwd i , и я хотел бы найти все жесткие ссылки на этот файл в каталоге. Как узнать все остальные жесткие ссылки в каталоге /etc/passwd in/backups/ ? Как найти все жесткие ссылки на данный файл с помощью командной строки Linux или Unix?

Вы можете использовать команду find в Linux, Apple MacOS, FreeBSD и других операционных системах, чтобы узнать все жесткие ссылки.

Как найти все жесткие ссылки на предоставленный файл
Жесткая ссылка — это не что иное, как конкретное местоположение физических данных. Вы даете разные имена, относящиеся к одному и тому же файлу. Файл относится к тому же inode, что и имя. Жесткие ссылки на файл foo можно создать следующим образом:

Код:
$ ln foo bar
$ ln foo dir2/foobar
В приведенном выше примере bar и foobar являются другими именами файла foo. Lля поиска всех жестких ссылок для файла foo в текущем каталоге cинтаксис будет выглядеть следующим образом:

Код:
find /dir/to/search/ -samefile /path/to/file/name
## To find out all hard links to foo, use this command:
find / -samefile foo
find / -xdev -samefile foo
Примеры
Если есть файл с именем /etc/passwd и вам нужно получить все жесткие ссылки на него, которые существуют в каталоге /backups/ , запустите:
Код:
$ find /backups/ -samefile /etc/passwd
Примеры возможных выводов данных:

Код:
/backups/hourly.0/etc/passwd
/backups/hourly.4/etc/passwd
/backups/hourly.3/etc/passwd
/backups/daily.0/etc/passwd
/backups/hourly.1/etc/passwd
/backups/hourly.2/etc/passwd
Если вы не хотите спускать каталоги на другие файловые системы, смонтированные однажды, попробуйте ввести:
Код:
$ find /backups/ -xdev -samefile /etc/passwd
Найдите и удаляйте все жесткие ссылки на файл с именем foo в /tmp/ директории
Введите следующую команду:
Код:
$ find /tmp/ -xdev -samefile foo -print0 | xargs -I {} -0 rm -v {}
Примеры возможных выводов данных:

Код:
removed '/tmp/dir2/foobar'
removed '/tmp/foo'
removed '/tmp/bar'

Справка, параметр -samefile не поддерживается моей командой find
Найдите номер файлов inode, для этого введите:
Код:
$ ls -li fileNameHere
$ ls -li /tmp/demo.txt
Примеры возможных выводов данных:
Код:
4065089 -rw-r--r-- 3 vivek vivek 8 Feb 26 02:19 /tmp/demo.txt
Первый столбец вышеприведенного вывода отображает индекс inode # 4065089 . Теперь альтернативный синтаксис выглядит следующим образом для поиска всех жестких ссылок (hard link) для файла с именем /tmp/demo.txt , используя inode # 4065089 :

Код:
$ find /tmp/ -inum 4065089
$ find /tmp/ -xdev -inum 4065089
Примеры возможных выводов данных:

Код:
/tmp/demo.txt
/tmp/dir2/file2.txt
/tmp/file1.txt
Чтобы найти и удалить все жесткие ссылки (hard link) на файл с номером inode # 4065089 , запустите:

Код:
$ find /tmp/ -xdev -inum 4065089 | xargs rm -v
$ find /tmp/ -xdev -inum 4065089 -print0 | xargs -I {} -0 rm -v {}
Вот пример моей сессии:
 

О нас

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

    Dark-Time 2015 - 2022

    При поддержке: XenForo.Info

Быстрая навигация

Меню пользователя