Выбор ответа Senior Файловая система и права обновлено

Почему mv большого файла мгновенный

Вопрос

Почему mv /data/big.iso /data/archive/ для файла в 50 ГБ выполняется мгновенно, а mv /data/big.iso /mnt/usb/ долго?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: В одной ФС mv делает rename(), а между ФС копирует данные. Имя файла живёт в каталоге, данные в inode. rename() в пределах ФС переносит запись «имя → inode», данные не трогает.

Варианты ответа

  1. Первый вызов кеширует файл в памяти и пишет его на диск позже
  2. В первом случае mv запускает копирование в фоне и сразу выходит
  3. В одной ФС mv делает rename(), а между ФС копирует данныеправильный ответ
  4. USB-диск смонтирован только для чтения, и mv повторяет попытки

Разбор

Имя файла живёт в каталоге, данные в inode. rename() в пределах ФС переносит запись «имя → inode», данные не трогает. Между разными ФС inode не перенести, поэтому mv копирует байты и удаляет исходник. Фонового копирования и кеширования тут нет, а ФС только для чтения дала бы ошибку, а не медленную работу.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.