Déplacer un fichier vers un fichier en cours de lecture


10

Lorsqu'un fichier est déplacé et que le fichier de destination existe déjà et est en cours de lecture, l'opération réussira-t-elle? Cela dépendra-t-il de la durée de l'opération de lecture sur le fichier de destination?

Réponses:


9

L'opération de lecture réussira, quel que soit le temps nécessaire pour terminer l'opération de lecture.

Pourquoi et comment ça marche?

Lorsque l'opération de lecture démarre, l' inode du fichier est utilisé comme poignée à partir de laquelle le contenu du fichier est lu.

Lorsque vous déplacez un autre fichier vers le fichier cible, le résultat sera un nouvel inode, ce qui signifie que le contenu physique du fichier sur le disque sera placé ailleurs et que le contenu original du fichier en cours de lecture ne sera pas touché.

La seule chose qu'ils ont en commun, c'est leur chemin / nom de fichier, tandis que l'inode sous-jacent et l'emplacement phyiscal sur le disque changent.

Une fois l'opération de lecture terminée (étant donné qu'aucun autre processus n'a encore de descripteur de fichier ouvert sur l'ancien fichier et qu'il n'y a aucun autre lien physique référençant son inode), les anciennes données seront supprimées.

Une fois l'opération de déplacement terminée, le fichier aura un nouveau numéro d'index d'inode.

Vous pouvez afficher le numéro d'index d'inode des fichiers à l'aide de ls -i /tmp/some-file.

Pour la même raison que celle décrite ci-dessus, il est possible de supprimer des fichiers qui sont toujours utilisés par une application, car les applications utilisant le fichier liront simplement à partir de l'inode (pointant vers le contenu réel du fichier sur le disque) tandis que la référence des fichiers dans le système de fichiers est supprimé.


1
Vous avez oublié de mentionner les liens matériels: lorsque l'opération de lecture se termine, si cet inode est lié à partir d'une autre entrée de répertoire, les données ne seront pas supprimées (car elles ont toujours un nom).
cjm

Merci de l'avoir signalé, modifié ma réponse et ajouté.
Elias Probst
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.