GNU/Linux >> Tutoriels Linux >  >> Linux

Est-ce que mv avec joker est toujours atomique

Solution 1 :

Commençons par la déclaration que mv n'est pas toujours atomique.

Identifions également que l'atomicité fait référence au contenu du fichier, pas au nom du fichier.

Pour tout fichier individuel, le déplacement ou renommage effectué par mv est atomique à condition que le fichier soit déplacé dans le même système de fichiers. L'atomicité ne garantit pas que le fichier se trouve uniquement à un endroit ou à un autre; il est tout à fait possible que le fichier soit présent dans le système de fichiers aux deux endroits simultanément pendant "un court laps de temps". Ce que l'atomicité garantit, lorsqu'elle est proposée, c'est que le contenu du fichier est instantanément disponible complètement et non partiellement. Vous pouvez imaginer que mv dans de telles situations aurait pu être implémenté avec ln suivi de rm .

mv n'est certainement pas atomique lorsque le déplacement qu'il effectue est d'un système de fichiers à un autre, ou lorsqu'un système de fichiers distant ne peut pas implémenter le mv fonctionnement localement. Dans ces cas mv on pourrait dire qu'il est implémenté par l'équivalent d'un cp suivi de rm .

Passons maintenant à la question de l'atomicité sur plusieurs fichiers. mv est au mieux atomique uniquement par fichier, donc si vous avez un certain nombre de fichiers à déplacer ensemble, l'implémentation est telle qu'ils seront déplacés un par un. Si vous aimez, mv file1 dir; mv file2 dir; mv file3 dir .

Si vous avez vraiment besoin qu'un groupe de fichiers apparaisse simultanément dans une destination, envisagez de les placer dans un répertoire et de déplacer ce répertoire. Cet objet unique (le répertoire) peut être déplacé de manière atomique.

Solution 2 :

mv dir1/* est identique à mv dir1/file1 && mv dir1/file2 && mv dir1/fileN . Chaque mouvement individuel est atomique, mais pas l'ensemble complet.


Linux
  1. Dd Vs Cat - Dd est-il toujours pertinent de nos jours ?

  2. Est-ce que Mv Atomic est sur le F?

  3. Remplacer la nouvelle ligne par Nul ?

  4. Autorisations de fichiers sous Linux avec exemple

  5. Avertissement avec nftw

Commande Linux Tail avec exemples

Commande Linux WC avec exemples

Retrouver les fichiers perdus avec Scalpel

Signatures numériques avec GnuPG

Travaille toujours avec des boîtes de gnome

Comportement de rsync avec un fichier en cours d'écriture ?