Est-il risqué de renommer un dossier de 180 Go avec la mv
commande?
Nous avons un dossier /data
qui contient 180 Go.
Nous voulons renommer le /data
dossier /BD_FILES
avec la mv
commande.
Est-ce sûr de faire ça?
Est-il risqué de renommer un dossier de 180 Go avec la mv
commande?
Nous avons un dossier /data
qui contient 180 Go.
Nous voulons renommer le /data
dossier /BD_FILES
avec la mv
commande.
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 /data
semble que ce pourrait être un point de montage pour moi, vérifiez cela avec mount
), vous devez faire autre chose qu'un simple mv
car mv /data /BD_FILES
cela 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 /data
mv /data /BD_FILES
(en supposant qu'il /BD_FILES
n'existe pas déjà, dans ce cas, déplacez-le d'abord)/etc/fstab
, modification du point de montage de /data
à/BD_FILES
mount /BD_FILES
Cela 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 /data
trouve sur un disque alors qu'il se /BD_FILES
trouve 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 rsync
manuel 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 rename
appel 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 rename
appel système est effectué et mv
ne 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
rsync
c'est qu'il est redémarrable.
rsync -a
préserve presque toutes les métadonnées, mais pas les liens durs, les ACL ou les attributs étendus (ajoutez -HAX
pour cela).
rename
commandes différentes avec un comportement différent. Je pense que c'est une raison suffisante pour ne pas utiliser la rename
commande 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 mv
décide de tout copier pour une raison quelconque et qui se bloque à mi-chemin. Si vous avez GNU mv
, mv -T
supprimera ce risque.
mv -T
indique mv
qu'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 -T
que 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.
mv
avec l'-i
option.