Рискованно ли переименовывать папку с 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 /datamv /data /BD_FILES(при условии, что он /BD_FILESеще не существует, в таком случае сначала удалите его)/etc/fstab, изменение точки монтирования от /dataдо/BD_FILESmount /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опцией.