On Fri, 22 Mar 2002, Thierry Lombardot wrote:
> 1. Et plus g�n�ralement, comment "cp" g�re la copie d'un long fichier,
> si ce fichier est modifi� par un autre utilisateur en m�me temps. Est-ce
> qu'une copie en m�moire est effectu�e entre les op�ration sur disque
> dur?? rien dans man cp...
UNIX par d�faut n'impl�mente aucune protection / mesure contre l'acc�s
multiple.
Une telle op�ration r�sulte en un fichier destination au contenu
impr�visible.
Une fa�on de s'en pr�munir dans ce cas pr�cis est d'utiliser un fichier de
lock (aka advisory locking, ou verrou coop�ratif):
LOCK_DIR=/var/lock # pas en NFS
LOCK_FILE=$LOCK_DIR/mon_application
LOCK_FILE_TMP=$LOCK_DIR/mon_application.tmp_$$
# Acqu�rir le lock file
while ! ln $LOCK_FILE_TMP $LOCK_FILE
do
sleep 5
done
rm -f $LOCK_FILE_TMP
... op�rations ...
# Rendre le lock file
rm -f $LOCK_FILE # ou via un trap 0 apr�s la boucle.
Ce qui pr�c�de se base sur le concept de liens durs et sur
l'atomicit� des appels syst�mes link(2) et unlink(2).
Il y a d'autres fa�on de le faire. Linux support aussi le Mandatory
Locking, cf $KERNEL_SRC/Documentation/mandatory.txt, mais c'est en g�n�ral
une tr�s mauvaise id�e.
--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se d�sabonner aussi.