De manière générale, je suis pris de panique quand je me rends compte que si j'annule un déplacement de fichier, cela pourrait rendre la cible ou la source incomplète. Cette question s'applique aux plates-formes Windows et Unix. Je ne me souviens jamais exactement comment fonctionne la commande move dans les deux cas. Par exemple, si vous déplacez un répertoire; copie-t-il tout le répertoire, puis le supprime-t-il après, ou copie-t-il puis supprime-t-il chaque fichier individuellement?
Je me rends toujours compte, après avoir tapé quelque chose comme mv verybigdir dest
, que j'aurais peut-être dû taper cp -R verybigdir dest && rm -R verybigdir
(où l' &&
opérateur passe à la commande suivante uniquement si la première a réussi) - ou est-ce inutile? Que se passe-t-il exactement lorsque j'appuie sur Ctrl+ à Cmi-chemin d'un mouvement? De même, que se passe-t-il exactement sous Windows lorsque j'appuie sur le bouton Annuler?
Je ne peux pas compter le nombre de fois où j'ai déplacé quelque chose (la dernière fois lors de l'utilisation svn
) et j'ai eu deux répertoires, avec un contenu divisé. Je suppose que la réponse est difficile, car toutes les applications ne déplacent pas des groupes de fichiers de la même manière.
la source
Réponses:
Sous Windows, le déplacement vers le même lecteur et la même partition agira exactement comme la commande mv d'Unix et renommera le dossier ou changera son parent. Cependant, si vous deviez le déplacer vers un autre pilote ou partition, il copierait et supprimerait fichier par fichier, d'où la raison pour laquelle il est plus efficace d'utiliser un fichier tar ou un fichier zip sans compression pour déplacer plus rapidement les fichiers sur les partitions et les disques durs. . Si vous l'annuliez, il s'arrêterait simplement là où il se trouve. Je pense que la même chose est vraie pour Unix mais je n'ai pas suffisamment expérimenté avec pour être sûr à 100%. Il s'agit simplement de changer l'inode, mais s'il se trouve sur une autre partition ou lecteur, il doit être copié dans les secteurs de cette partition ou lecteur. Si vous deviez l'annuler pendant le transfert, il aurait déjà déplacé certains fichiers et le fichier en cours de transfert le verra '
Mise à jour: si vous deviez annuler un déménagement et que vous vouliez le reprendre, il vous suffit de relancer l'ordre de déplacement. Cela peut vous avertir que le dossier de destination existe déjà, mais les fichiers ne seront pas écrasés (sauf s'ils existaient avant le déplacement d'origine ou s'ils ont été ajoutés entre les deux ordres de déplacement) car dès qu'ils sont transférés, ils sont supprimés de la source (si sur une partition ou un lecteur différent).
la source
Même sur un ordinateur parfaitement stable qui ne tombe jamais en panne: si vous vous souciez des horodatages,
mv
c'est mieux que simplecp
.(
cp -a
conservera les horodatages pour vous, et je suppose que quelque chose de similaire existe sous Windows).la source
Non.
Explication:
renomme verybigdir en dest. Il s'agit d'une opération atomique, c'est-à-dire qu'elle ne peut pas échouer à mi-parcours.
Si dest se trouve sur un autre appareil, mv copiera d'abord, puis supprimera l'ancienne version. Ce n'est pas une opération atomique. S'il échoue, vous ne pouvez avoir qu'une copie partielle de verybigdir dans dest, mais verybigdir sera toujours complet.
Oui, d'autres applications peuvent déplacer des fichiers différemment.
la source
mv verybigdir/* dest
.mv verybigdir/* dest
divise le mv de verybigdir en de nombreuses opérations de déplacement distinctes. Rappelez-vous toujours que contrairement à Windows, un programme / outil Linux ne voit pas que "*" là, il est développé par le shell.Sur Windows, je copie et supprime toujours au lieu de déplacer. J'étais en train de déplacer des fichiers et c'est là que j'ai remarqué pour la première fois un mauvais bâton de mémoire. Lors du déplacement du fichier, il s'est arrêté entre les deux et j'ai reçu une erreur, j'ai donc vérifié le dossier source et le fichier était parti, puis j'ai vérifié la destination et il y avait un fichier corrompu. Cela s'est produit plus fréquemment avec des fichiers de plus grande taille et la plupart d'entre eux étaient des téléchargements qui ont pris des heures, donc je recommande de copier puis de supprimer. Gagnez du temps au début, cela sera payant à la fin.
la source
Sous Unix, lors de déplacements qui ne dépassent pas les limites du système de fichiers,
mv
ne copie pas les données: il met simplement à jour la base de données inode dans divers répertoires. C'est beaucoup plus rapide quecp
sur les gros fichiers.De plus, l'utilisation
mv
au-delà des limites du système de fichiers appelle simplement un mécanisme de copie et de suppression.Je pense donc que vous devriez préférer
mv
.la source
Dans Windows, au moins, déplacer est tout simplement une copie et une suppression plus automatisées. Je crois que mv déplace chaque fichier individuellement, ce qui signifie que ^ c-ing ne perdra aucun fichier, vous vous retrouverez simplement avec vos fichiers divisés en deux endroits - contrairement à l'Explorateur Windows, qui supprimera tout tout lorsqu'il annulera.
Ma solution est la suivante: ne bougez jamais sauf si je suis sûr de vouloir le déplacer.
la source
Si vous utilisez des ACL sur le système de fichiers source, mais pas sur la destination, mv sous Linux copiera la source puis - en raison de l'impossibilité de définir les ACL sur la destination - s'arrêter. Vous finissez donc par avoir le dossier des deux côtés. Il n'y a pas de commutateur en mv pour empêcher ce comportement. Dans ce cas, cp && rm est préférable.
la source