Рискованно ли переименовывать папку с 180GB mv
командой?
У нас есть папка, /data
которая содержит 180 ГБ.
Мы хотим переименовать /data
папку /BD_FILES
с помощью mv
команды.
Безопасно ли это делать?
Рискованно ли переименовывать папку с 180GB mv
командой?
У нас есть папка, /data
которая содержит 180 ГБ.
Мы хотим переименовать /data
папку /BD_FILES
с помощью mv
команды.
Безопасно ли это делать?
Ответы:
Изменение имени в папке является безопасным, если оно остается в той же файловой системе.
Если это точка монтирования ( /data
похоже, это может быть точка монтирования для меня, проверьте это с помощью mount
), тогда вам нужно сделать что-то, кроме простого, mv
так mv /data /BD_FILES
как данные будут перемещены в корневой раздел (что может быть ты хочешь случиться).
Вы должны размонтировать файловую систему, переименовать теперь пустой каталог, обновить /etc/fstab
с новым местоположением для этой файловой системы, а затем перемонтировать файловую систему в переименованном месте.
Другими словами,
umount /data
mv /data /BD_FILES
(при условии, что он /BD_FILES
еще не существует, в таком случае сначала удалите его)/etc/fstab
, изменение точки монтирования от /data
до/BD_FILES
mount /BD_FILES
Это не включает копирование каких-либо файлов, оно просто меняет имя каталога, который действует как точка монтирования файловой системы.
Если переименование каталога связано с перемещением его в новую файловую систему (что будет иметь место, если он /data
находится на одном диске, а /BD_FILES
на другом - обычное дело, например, если вы перемещаете файлы в больший раздел) Я бы порекомендовал копировать данные, не трогая оригинал до тех пор, пока вы не убедитесь, что копия в порядке. Вы можете сделать это с
rsync -a /data/ /BD_FILES/
например, но посмотрите rsync
руководство, чтобы узнать, что он делает и чего не делает (например, он не сохраняет жесткие ссылки).
После того, как папка переименована, вам также необходимо убедиться, что существующие процедуры (программы и пользователи, использующие папку, резервные копии и т. Д.) Знают об изменении имени.
mv
просто выполнить rename
системный вызов, но из-за обстоятельств он не осознал, что собирается скопировать файлы и удалить оригинал. Если мне нужно быть абсолютно уверенным, просто выполняется rename
системный вызов, и я mv
не собираюсь делать что-то «умное» за моей спиной, я открываю оболочку Python и использую os.rename
.
mkdir /BD_FILES && mount -M /data /BD_FILES && rmdir /data
rsync
Отличная вещь в том, что он перезапускается.
rsync -a
сохраняет почти все метаданные, но не жесткие ссылки, ACL или расширенные атрибуты (добавьте -HAX
для этого).
rename
команды с разным поведением. Я думаю, что это достаточная причина, чтобы не использовать rename
команду, если вы хотите быть уверенными в том, что она собирается делать.
Вы не переименовываете каждый файл в каталоге, вы переименовываете один файл в /. Это потому что:
Таким образом, переименование каталога, независимо от того, сколько файлов или данных в нем, тривиально.
Если вы просто переименуете (источник и цель в одной файловой системе), это просто переименование записи каталога. Это либо успешно, и каталог имеет новое имя, либо не удается, и в этом случае ничего не меняется * .
Если источник и цель находятся в разных файловых системах, данные должны быть скопированы mv
. Различия в функциях файловой системы, такие как максимальный размер файла, ограничения в именах файлов и т. Д., Могут вызвать проблемы. Чтобы избежать проблем, первой копии файлов ( cp
, rsync
, ...) , и после успешного завершения копирования, удаления файлов в исходном местоположении.
* Однако есть некоторые угловые случаи, например, упомянутые в разделе BUGS в man 2 rename
Как уже говорили другие, переименование папки не представляет риска для содержимого. Но есть другой вид риска, который вы можете рассмотреть.
Существующие процедуры, сценарии, пользовательские ярлыки и конфигурации, которые ссылаются на исходное местоположение, могут быть нарушены этим изменением, и, если, например, пути хранятся в базе данных, их обновление может быть большой задачей.
Одна вещь, которую вы можете сделать, это создать символическую ссылку для нового имени каталога, но оставить старое имя на некоторое время. Это даст вам время оценить влияние этого изменения. Вы можете временно удалить старое имя, посмотреть, есть ли какие-либо проблемы, и, если они есть, просто воссоздать старое имя, чтобы люди могли продолжать работать, пока вы выясняете, что нужно обновить.
Команда что-то вроде этого должна сделать это:
ln -s /data /BD_FILES
mv thing1 thing2 ; ln --symbolic ./thing2 thing1
. Таким образом, я получил новое имя и могу легко проверить отсутствие старого, удалив символическую ссылку.
Переименование атомное. Единственный разумный риск заключается в том, mv
что по какой-то причине решается все скопировать, и это приводит к сбою на полпути. Если у вас есть GNU mv
, mv -T
снимите этот риск.
mv -T
говорит, mv
что перемещается в не-папку; что заставит его отказаться от выполнения, mkdir()
что, в свою очередь, приведет к сбою при перемещении папки, и он решил копировать по какой-то причине.
Я участвовал в устранении ошибок, mv -T
работая над магистерской диссертацией несколько лет назад. Раньше делали неправильные вещи в слишком многих крайних случаях.
С другой стороны, у вас есть 180 ГБ пользовательских данных в корневом разделе. Вы, вероятно, хотите переместить это из корневого раздела.
mv
с-i
опцией.