Найти в Дзене

Переименовать нельзя переместить: команда mv в Linux, чего вы могли не знать

Многие думают, что команда mv в Linux — это самая простая вещь в мире. Ну что там сложного? Написал mv file1 file2 и готово. Но задумывались ли вы когда-нибудь, почему перемещение фильма весом в 50 Гб внутри диска происходит мгновенно, а перенос того же файла на флешку занимает 10 минут? И как одна опечатка в этой команде может стоить вам нескольких часов восстановления данных? Сегодня мы разберем «магию» перемещения файлов, научимся использовать флаги безопасности и заглянем под капот файловой системы. Команда mv (сокращение от move) выполняет две функции: переименование и перемещение. С точки зрения системы — это одно и то же действие. Чтобы переименовать файл, мы просто указываем новое имя в той же папке: $ mv old_photo.jpg my_cat.jpg Чтобы переместить файлы в другую директорию, перечисляем их и указываем путь назначения в конце: $ mv file1.txt file2.txt /home/user/backup/ Важно: Если вы перемещаете файл в папку, где уже есть файл с таким именем, mv по умолчанию удалит старый файл
Оглавление

Многие думают, что команда mv в Linux — это самая простая вещь в мире. Ну что там сложного? Написал mv file1 file2 и готово. Но задумывались ли вы когда-нибудь, почему перемещение фильма весом в 50 Гб внутри диска происходит мгновенно, а перенос того же файла на флешку занимает 10 минут? И как одна опечатка в этой команде может стоить вам нескольких часов восстановления данных?

Сегодня мы разберем «магию» перемещения файлов, научимся использовать флаги безопасности и заглянем под капот файловой системы.

Больше, чем просто перемещение

Команда mv (сокращение от move) выполняет две функции: переименование и перемещение. С точки зрения системы — это одно и то же действие.

Базовые операции

Чтобы переименовать файл, мы просто указываем новое имя в той же папке:

$ mv old_photo.jpg my_cat.jpg

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

$ mv file1.txt file2.txt /home/user/backup/

Важно: Если вы перемещаете файл в папку, где уже есть файл с таким именем, mv по умолчанию удалит старый файл и запишет новый без единого вопроса.

Секрет скорости mv: внутри одного раздела диск не перемещает сами данные (нули и единицы), он просто переписывает «адресную табличку» в папке, указывая на ту же ячейку памяти (Inode).

Как не потерять данные: флаги безопасности

Если вы работаете в терминале, у вас нет кнопки «Отменить» (Ctrl+Z). Поэтому стоит привыкнуть к защитным опциям.

1. Интерактивный режим (-i)

Добавьте этот флаг, и система спросит разрешение, прежде чем что-то перезаписать:

$ mv -i report.pdf /documents/
# Вывод: mv: overwrite '/documents/report.pdf'?

2. Резервное копирование (-b)

Если вы не хотите отвечать на вопросы, но боитесь потерять старую версию файла, используйте флаг backup. Система переименует старый файл, добавив к нему тильду ~, и положит рядом новый.

$ mv -b config.conf /etc/server/

3. Обновление (-u)

Флаг update переместит файлы только в том случае, если они новее тех, что уже лежат в папке, или если их там вовсе нет. Это идеальный способ для синхронизации папок вручную.

Когда mv начинает тормозить?

Теперь вернемся к вопросу из начала статьи: почему скорость mv меняется?

  1. Внутри одного раздела (Partition): Система просто меняет запись в оглавлении файловой системы. Это происходит со скоростью мысли, будь то текстовый файл или база данных на терабайт.
  2. Между разными дисками (например, с SSD на флешку): Здесь mv превращается в скрытую связку двух команд: сначала происходит полное копирование данных (cp), а после успешного завершения — удаление оригинала (rm). Именно поэтому здесь всё зависит от скорости вашего порта и накопителя.
Флаг -v (verbose) — лучший друг новичка. Он заставляет команду «говорить» и докладывать о каждом перемещенном файле.
Флаг -v (verbose) — лучший друг новичка. Он заставляет команду «говорить» и докладывать о каждом перемещенном файле.

Лайфхак: массовое переименование

Команда mv не умеет переименовывать файлы по маске (например, изменить расширение всем .txt на .bak). Для этого в Linux используют утилиту rename, но если вам нужно просто быстро раскидать файлы по папкам, mv в связке с регулярными выражениями — незаменимый инструмент.

Итог

Команда mv — это не просто «передвигалка» файлов. Это быстрый и мощный инструмент управления данными.

  • Хотите безопасности? Используйте -i.
  • Нужно обновить проект? Используйте -u.
  • Хотите видеть, что происходит? Поможет -v.

А какие флаги mv чаще всего используете вы в своей работе? Пишите в комментариях!

Если вам понравился материал, не забудьте поставить палец вверх 👍 и поделиться статьёй с друзьями. Подписывайтесь на мой Telegram-канал, чтобы первыми узнавать о новых статьях и полезных материалах. А также загляните на сайт RoadIT.ru, где я собираю заметки о командах Linux, HowTo-гайды и много другой интересной информации. Спасибо за внимание!