GNU/Linux >> Tutoriales Linux >  >> Linux

¿mv con comodín sigue siendo atómico?

Solución 1:

Comencemos con la afirmación de que mv no siempre es atómico.

Identifiquemos también que la atomicidad se refiere al contenido del archivo, no al nombre del archivo.

Para cualquier archivo individual, el movimiento o cambio de nombre realizado por mv es atómico siempre que el archivo se mueva dentro del mismo sistema de archivos. La atomicidad no garantiza que el archivo esté solo en un lugar u otro; es muy posible que el archivo esté presente en el sistema de archivos en ambos lugares simultáneamente durante "un corto tiempo". Lo que sí garantiza la atomicidad, cuando se ofrece, es que el contenido del archivo está disponible instantáneamente de forma completa y no parcial. Puedes imaginar que mv en tales situaciones podría haberse implementado con ln seguido de rm .

mv definitivamente no es atómico cuando el movimiento que realiza es de un sistema de archivos a otro, o cuando un sistema de archivos remoto no puede implementar el mv operación localmente. En estos casos mv podría decirse que está implementado por el equivalente de un cp seguido de rm .

Ahora, pasemos a la cuestión de la atomicidad en varios archivos. mv es, en el mejor de los casos, atómico solo por archivo, por lo que si tiene varios archivos para mover juntos, la implementación es tal que se moverán uno a la vez. Si quieres, mv file1 dir; mv file2 dir; mv file3 dir .

Si realmente necesita que un grupo de archivos aparezca en un destino simultáneamente, considere colocarlos en un directorio y mover ese directorio. Este único objeto (el directorio) se puede mover atómicamente.

Solución 2:

mv dir1/* es lo mismo que mv dir1/file1 && mv dir1/file2 && mv dir1/fileN . Cada movimiento individual es atómico, pero no el conjunto completo.


Linux
  1. Dd Vs Cat:¿Dd sigue siendo relevante en estos días?

  2. ¿Está Mv Atomic en el Fs?

  3. ¿Reemplazar nueva línea con Nul?

  4. tar -C con un patrón de archivo comodín

  5. ¿Cómo rellenar un archivo con FF usando dd?

Comando de cola de Linux con ejemplos

Comando WC de Linux con ejemplos

Encuentra archivos perdidos con Scalpel

Firmas digitales con GnuPG

Todavía trabajando con cajas de gnomos

Trazar archivo .gnu con gnuplot