Чи ризиковано перейменувати папку на 180 Гб за допомогою mvкоманди?
У нас є папка, /dataяка містить 180 Гб.
Ми хочемо перейменувати /dataпапку /BD_FILESв mvкоманду.
Чи безпечно це робити?
Чи ризиковано перейменувати папку на 180 Гб за допомогою 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
Як зазначають інші, перейменування папки не несе властивого вмісту. Але є різний вид ризику, який ви, можливо, захочете врахувати.
Існуючі процедури, сценарії, визначені користувачем ярлики та конфігурації, які посилаються на вихідне місце, можуть бути порушені цією зміною, і якщо шляхи зберігаються в базі даних, наприклад, їх оновлення може бути великою роботою.
Одне, що можна зробити, - це зробити символічне посилання на нове ім’я каталогу, але залишити стару назву на місці на деякий час. Це дасть вам час оцінити вплив цієї зміни. Ви можете тимчасово видалити стару назву, побачити, чи є якісь проблеми, а якщо є, просто створіть стару назву, щоб люди могли продовжувати працювати, поки ви з'ясуєте, що потрібно оновити.
Команда щось подібне повинно це робити:
ln -s /data /BD_FILES
mv thing1 thing2 ; ln --symbolic ./thing2 thing1. Таким чином я отримав нову назву і легко можу перевірити відсутність старого, видаливши symlink.
Перейменування - атомне. Єдиний розумний ризик полягає в тому, що mvвирішить скопіювати все з якихось причин, і це провалиться наполовину. Якщо у вас є GNU mv, mv -Tвилучите цей ризик.
mv -Tповідомляє, mvщо він переміщується до папки, яка не є папкою; що призведе до того, що він відмовиться робити, mkdir()що, в свою чергу, призведе до виходу з ладу при переміщенні папки, і вона вирішила скопіювати якусь причину.
Я брав участь у витрушенні помилок під mv -Tчас роботи над магістерською дисертацією років тому. Раніше це робилося неправильно на занадто багатьох крайніх корпусах.
З іншого боку, ви маєте 180 ГБ даних користувачів на кореневому розділі. Напевно, ви хочете перемістити це з кореневого розділу.
mvдопомогою цієї-iопції.