Изменяется ли оригинальный файл при редактировании через символьную ссылку (symlink)?

«Изменяется ли оригинальный файл при редактировании через символьную ссылку (symlink)?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, изменяется содержимое оригинального файла, но не сама символьная ссылка.

Символьная ссылка (symlink, soft link) — это отдельный файл особого типа, который содержит только текстовый путь к целевому файлу или каталогу. При операциях чтения или записи через ссылку ядро автоматически перенаправляет их на цель.

Практический пример:

# 1. Создаем оригинальный файл и символьную ссылку на него
echo "Первоначальное содержимое" > original_file.txt
ln -s original_file.txt my_symlink

# 2. Проверяем, что ссылка указывает на файл
ls -l my_symlink
# lrwxrwxrwx 1 user user 17 Apr 10 12:00 my_symlink -> original_file.txt

# 3. Редактируем ЦЕЛЕВОЙ файл, записывая данные ЧЕРЕЗ ссылку
echo "Новые данные, записанные через symlink" > my_symlink

# 4. Проверяем результат
cat original_file.txt
# Вывод: Новые данные, записанные через symlink

cat my_symlink
# Вывод: Новые данные, записанные через symlink

# 5. Сама ссылка как файл не изменилась — она по-прежнему содержит только путь.
# Мы можем это увидеть, прочитав её содержимое как обычный текстовый файл:
cat my_symlink  # Ядро перенаправит чтение на цель
readlink my_symlink  # Эта команда покажет истинное содержимое ссылки — путь.
# Вывод: original_file.txt

Ключевые выводы:

  • Изменение через symlink = изменение целевого файла.
  • Удаление symlink (rm my_symlink) не затрагивает оригинальный файл.
  • Удаление или перемещение оригинального файла приводит к "битой" ссылке (dangling symlink), которая будет указывать на несуществующий путь.