Est-il risqué de renommer un dossier de 180 Go avec la mvcommande?
Nous avons un dossier /dataqui contient 180 Go.
Nous voulons renommer le /datadossier /BD_FILESavec la mvcommande.
Est-ce sûr de faire ça?
Est-il risqué de renommer un dossier de 180 Go avec la mvcommande?
Nous avons un dossier /dataqui contient 180 Go.
Nous voulons renommer le /datadossier /BD_FILESavec la mvcommande.
Est-ce sûr de faire ça?
Réponses:
La modification du nom d'un dossier est sûre s'il reste dans le même système de fichiers.
S'il s'agit d'un point de montage (il /datasemble que ce pourrait être un point de montage pour moi, vérifiez cela avec mount), vous devez faire autre chose qu'un simple mvcar mv /data /BD_FILEScela déplacerait les données vers la partition racine (ce qui n'est peut-être pas ce que vous voulez arriver).
Vous devez démonter le système de fichiers, renommer le répertoire désormais vide, mettre /etc/fstabà jour avec le nouvel emplacement de ce système de fichiers, puis remonter le système de fichiers à l'emplacement renommé.
En d'autres termes,
umount /datamv /data /BD_FILES(en supposant qu'il /BD_FILESn'existe pas déjà, dans ce cas, déplacez-le d'abord)/etc/fstab, modification du point de montage de /dataà/BD_FILESmount /BD_FILESCela n'implique pas de copier des fichiers, il modifie simplement le nom du répertoire qui sert de point de montage pour le système de fichiers.
Si le changement de nom du répertoire implique de le déplacer vers un nouveau système de fichiers (ce qui serait le cas s'il se /datatrouve sur un disque alors qu'il se /BD_FILEStrouve sur un autre disque, une chose courante à faire si vous déplacez des choses vers une plus grande partition, par exemple) , Je vous recommande de copier les données tout en laissant l'original intact jusqu'à ce que vous puissiez vérifier que la copie est correcte. Vous pouvez le faire avec
rsync -a /data/ /BD_FILES/
par exemple, mais voir le rsyncmanuel pour ce que cela fait et ne fait pas (il ne préserve pas les liens durs, par exemple).
Une fois le dossier renommé, vous devez également vous assurer que les procédures existantes (programmes et utilisateurs utilisant le dossier, sauvegardes, etc.) sont au courant du changement de nom.
mvà ne faire qu'un renameappel système, mais en raison de circonstances, on ne s'est pas rendu compte qu'il va copier les fichiers et supprimer l'original. Si je dois être absolument certain qu'un simple renameappel système est effectué et mvne va pas faire quelque chose de "intelligent" derrière mon dos, j'ouvre un shell Python et j'utilise os.rename.
mkdir /BD_FILES && mount -M /data /BD_FILES && rmdir /data
rsyncc'est qu'il est redémarrable.
rsync -apréserve presque toutes les métadonnées, mais pas les liens durs, les ACL ou les attributs étendus (ajoutez -HAXpour cela).
renamecommandes différentes avec un comportement différent. Je pense que c'est une raison suffisante pour ne pas utiliser la renamecommande lorsque vous voulez être certain de ce qu'elle va faire.
Vous ne renommez pas tous les fichiers du répertoire, vous renommez un fichier dans /. C'est parce que:
Ainsi, renommer un répertoire, quel que soit le nombre de fichiers ou la quantité de données qu'il contient, est trivial.
Si vous renommez simplement (source et cible dans le même système de fichiers), il s'agit simplement d'un renommage d'une entrée de répertoire. Il réussit et le répertoire a un nouveau nom, ou échoue, auquel cas rien ne change * .
Si la source et la cible se trouvent sur des systèmes de fichiers différents, les données doivent être copiées par mv. Des différences dans les fonctionnalités du système de fichiers, telles que la taille maximale du fichier, les limitations des noms de fichier, etc., peuvent provoquer des problèmes. Pour éviter les problèmes, d' abord copier des fichiers ( cp, rsync, ...) et après la copie terminée, supprimer les fichiers dans l'emplacement d' origine.
* Cependant, il y a des cas d'angle, par exemple mentionnés dans la section BUGS dans man 2 rename
Comme d'autres l'ont dit, renommer un dossier ne présente aucun risque inhérent au contenu. Mais il existe un autre type de risque que vous voudrez peut-être considérer.
Les procédures existantes, les scripts, les raccourcis définis par l'utilisateur et les configurations qui font référence à l'emplacement d'origine pourraient être rompus par cette modification, et si les chemins sont stockés dans une base de données, par exemple, leur mise à jour pourrait être un gros travail.
Une chose que vous pouvez faire est de créer un lien symbolique pour le nouveau nom de répertoire, mais laissez l'ancien nom en place pendant un certain temps. Cela vous donnera le temps d'évaluer l'impact de ce changement. Vous pouvez supprimer temporairement l'ancien nom, voir s'il y a des problèmes, et s'il y en a, recréez simplement l'ancien nom pour que les gens puissent continuer à travailler pendant que vous déterminez ce qui doit être mis à jour.
Une commande comme celle-ci devrait le faire:
ln -s /data /BD_FILES
mv thing1 thing2 ; ln --symbolic ./thing2 thing1. De cette façon, j'ai le nouveau nom et je peux facilement tester l'absence de l'ancien en supprimant le lien symbolique.
Renommer est atomique. Le seul risque raisonnable est celui qui mvdécide de tout copier pour une raison quelconque et qui se bloque à mi-chemin. Si vous avez GNU mv, mv -Tsupprimera ce risque.
mv -Tindique mvqu'il se déplace vers un non-dossier; ce qui l'amènera à refuser de le faire, mkdir()ce qui, à son tour, entraînera son échec en déplaçant un dossier et il a décidé de copier pour une raison quelconque.
J'ai participé à l'élimination des bogues pendant mv -Tque je travaillais sur la thèse de mon maître il y a des années. Il faisait la mauvaise chose sur trop de cas marginaux.
D'un autre côté, vous disposez de 180 Go de données utilisateur sur la partition racine. Vous souhaiterez probablement supprimer cela de la partition racine.
mvavec l'-ioption.