Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment savoir si un fichier est ouvert ?

14 réponses
Avatar
Bruno GUERPILLON
Bonjour à tous,

Je cherche à faire un script python pour faire une sauvegarde de fichier.
Avant de sauvegarder chaque fichier, je voudrais vérifier si ce fichier est
ouvert ou non (en gros, est-ce que le fichier est locké par un processus).
En effet, dans le cas d'une sauvegarde d'une base Oracle par exemple, il
vaut mieux vérifier que les fichiers ne sont pas en cours d'utilisation au
risque de corrompre la base.
Avez-vous des idées dans ce sens ?

Cordialement,

Bruno.

10 réponses

1 2
Avatar
bruno.desthuilliers
On 8 avr, 11:16, "Bruno GUERPILLON" wrote:
Bonjour à tous,

Je cherche à faire un script python pour faire une sauvegarde de fichier .
Avant de sauvegarder chaque fichier, je voudrais vérifier si ce fichier est
ouvert ou non (en gros, est-ce que le fichier est locké par un processus ).
En effet, dans le cas d'une sauvegarde d'une base Oracle par exemple,


Heu... Oracle ne fournit pas les outils nécessaires pour effectuer une
sauvegarde fiable de ses bases ??? Franchement, là, j'ai un doute...

il
vaut mieux vérifier que les fichiers ne sont pas en cours d'utilisation au
risque de corrompre la base.
Avez-vous des idées dans ce sens ?


C'est en bonne partie dépendant de l'OS et du filesystem. Regarde déjà
par là:
http://docs.python.org/lib/os-newstreams.html
http://docs.python.org/lib/os-fd-ops.html

et si tu es sous unix-like:
http://docs.python.org/lib/module-fcntl.html

HTH

Avatar
Bruno GUERPILLON
Bonjour,

Plutôt que d'utiliser les outils Oracle, j'ai l'habitude de "faire" mes
propres outils de sauvegarde.
Typiquement, cela ressemblerait à ceci :

* Vérification si un fichier a un lock
* Si c'est le cas : stop
* sinon : faire un md5 du fichier
* Copier le fichier
* Faire un md5 du fichier copié
* Comparer les deux chaines md5 pour être sur de la cohérence de la copie

Merci pour les liens, je vais voir ceci de ce pas.

Cordialement,

Bruno.

a écrit dans le message de news:

On 8 avr, 11:16, "Bruno GUERPILLON" wrote:
Bonjour à tous,

Je cherche à faire un script python pour faire une sauvegarde de fichier.
Avant de sauvegarder chaque fichier, je voudrais vérifier si ce fichier
est
ouvert ou non (en gros, est-ce que le fichier est locké par un processus).
En effet, dans le cas d'une sauvegarde d'une base Oracle par exemple,


Heu... Oracle ne fournit pas les outils nécessaires pour effectuer une
sauvegarde fiable de ses bases ??? Franchement, là, j'ai un doute...

il
vaut mieux vérifier que les fichiers ne sont pas en cours d'utilisation au
risque de corrompre la base.
Avez-vous des idées dans ce sens ?


C'est en bonne partie dépendant de l'OS et du filesystem. Regarde déjà
par là:
http://docs.python.org/lib/os-newstreams.html
http://docs.python.org/lib/os-fd-ops.html

et si tu es sous unix-like:
http://docs.python.org/lib/module-fcntl.html

HTH

Avatar
Eric Deveaud
Bruno GUERPILLON wrote:
Bonjour à tous,

Je cherche à faire un script python pour faire une sauvegarde de fichier.
Avant de sauvegarder chaque fichier, je voudrais vérifier si ce fichier est
ouvert ou non (en gros, est-ce que le fichier est locké par un processus).
En effet, dans le cas d'une sauvegarde d'une base Oracle par exemple, il
vaut mieux vérifier que les fichiers ne sont pas en cours d'utilisation au
risque de corrompre la base.


je suis surpris que Oracle ne fournisse pas ce genre de service, mais pourquoi
pas ;-)

Sans garanties aucunes

sinon qu'est ce que cela donne en essayant de poser soi m?me un verrou exclusif
si le fichier est déja vérouillé tu ne pourras pas. voir du côté de
fnctl.flcok


Eric

Avatar
Bruno GUERPILLON
Bonjour,

Une sauvegarde à froid revient à faire une simple copie de fichier. Dans ce
cas l'utilitaire ocopcy.exe d'Oracle peut être utilisé.
Mais je ne pense pas que ce soit le but de ma question d'origine.
Aimant faire moi-même mes outils d'admin, je voudrais le faire en python
pour aussi apprendre davantage ce langage (j'ai des notions dans d'autres)

Le but est de savoir si quelqu'un sait lister les fichiers ouverts en
python.

Cordialement,

Bruno.

"Eric Deveaud" a écrit dans le message de news:

Bruno GUERPILLON wrote:
Bonjour à tous,

Je cherche à faire un script python pour faire une sauvegarde de
fichier.
Avant de sauvegarder chaque fichier, je voudrais vérifier si ce fichier
est
ouvert ou non (en gros, est-ce que le fichier est locké par un
processus).
En effet, dans le cas d'une sauvegarde d'une base Oracle par exemple, il
vaut mieux vérifier que les fichiers ne sont pas en cours d'utilisation
au
risque de corrompre la base.


je suis surpris que Oracle ne fournisse pas ce genre de service, mais
pourquoi
pas ;-)

Sans garanties aucunes

sinon qu'est ce que cela donne en essayant de poser soi m?me un verrou
exclusif
si le fichier est déja vérouillé tu ne pourras pas. voir du côté de
fnctl.flcok


Eric



Avatar
Guillaume
[blah]
"Eric Deveaud" a écrit dans le message de news:

Bruno GUERPILLON wrote:



tu réponds.
message auquel
de poster sous le
C'est bien aussi

Parce que tout le monde ne dispose pas de l'étonnante faculté de lire de
bas en haut ;)

Cordialement,
--
Guillaume


Avatar
chris
Bonjour à tous,

Je cherche à faire un script python pour faire une sauvegarde de fichier.
Avant de sauvegarder chaque fichier, je voudrais vérifier si ce fichier est
ouvert ou non (en gros, est-ce que le fichier est locké par un processus).
En effet, dans le cas d'une sauvegarde d'une base Oracle par exemple, il
vaut mieux vérifier que les fichiers ne sont pas en cours d'utilisation au
risque de corrompre la base.
Avez-vous des idées dans ce sens ?

Cordialement,

Bruno.




Bonjour,

Sous linux il existe le programme lsof (liste open file)
Dans le cas d'oracle et c'est le DBA qui parle il FAUT IMPERATIVEMENT
(désolé pour les majuscules) s'assurer que la base de donnée (BDD) est
fermée.
Sinon la sauvegarde ne servira a RIEN (désolé pour les majuscules)

Pour ce faire il suffit de lancer la procédure de shutdown de la base
sous Linux c'est des scripts en général

sous windows cela doit entre un service ou alors il existe peut etre
encore le binaire oradim

Mais attention sous Oracle il est nécessaire de prévoir si le volume le
permet 2 sauvegardes : une physique et une logique

Physique : sauvegarde à froid de l'ensemble des fichiers de la base

Logique : Export (FULL DUMP ) de la base de données

Utilisation :
physique : quand la machine un fichier est cassé
Logique : permet de récupérer une table dans la base

Bon courage
A+
chris

Avatar
Bruno GUERPILLON
"chris" a écrit dans le message de news:
47fb7d86$0$1349$
Bonjour à tous,

Je cherche à faire un script python pour faire une sauvegarde de fichier.
Avant de sauvegarder chaque fichier, je voudrais vérifier si ce fichier
est ouvert ou non (en gros, est-ce que le fichier est locké par un
processus).
En effet, dans le cas d'une sauvegarde d'une base Oracle par exemple, il
vaut mieux vérifier que les fichiers ne sont pas en cours d'utilisation
au risque de corrompre la base.
Avez-vous des idées dans ce sens ?

Cordialement,

Bruno.


Bonjour,

Sous linux il existe le programme lsof (liste open file)
Dans le cas d'oracle et c'est le DBA qui parle il FAUT IMPERATIVEMENT
(désolé pour les majuscules) s'assurer que la base de donnée (BDD) est
fermée.
Sinon la sauvegarde ne servira a RIEN (désolé pour les majuscules)

Pour ce faire il suffit de lancer la procédure de shutdown de la base
sous Linux c'est des scripts en général

sous windows cela doit entre un service ou alors il existe peut etre
encore le binaire oradim

Mais attention sous Oracle il est nécessaire de prévoir si le volume le
permet 2 sauvegardes : une physique et une logique

Physique : sauvegarde à froid de l'ensemble des fichiers de la base

Logique : Export (FULL DUMP ) de la base de données

Utilisation :
physique : quand la machine un fichier est cassé
Logique : permet de récupérer une table dans la base

Bon courage
A+
chris



Merci de la réponse.

Et merci à tous de venir donner vos idées sur ce qu'est une sauvegarde d'une
base Oracle mais pour rappel : c'est n'est pas le sujet du message
d'origine.
Pour préciser, je sais comment sauvegarder une base de données Oracle à
froid, merci de s'en préoccuper.

Puisqu'il faut être plus précis, dans le processus sauvegarde Oracle en
l'occurence, vu que je sais faire :
1. l'arrêt de la base
2. la vérification de l'arrêt de la base
3. question du post d'origine : comment lister les fichiers ouverts
4. md5 des fichiers
5. copie des fichiers
6. md5 des fichiers copiés
7. comparaison des md5.

Ma question ne porte que sur le point N° : comment avoir la liste des
fichiers actuellement ouverts à l'aide de python.
Ces fichiers pourraient bien être des DBF tout comme des mp3, des fichiers
word, excel etc.
Sans être agacé, si je voulais des précisions sur la façon de sauvegarder
une base Oracle à froid, croyez-moi que j'aurai posté chez Metalink ou dans
le NG adéquat.

Maintenant, je reprend ma demande d'origine :

Quelqu'un aurait-il une idée pour récupérer la liste des fichiers ouverts
(comme un lsof sous Unix, ou par la commande Handle.exe de Sysinternals/M$).

Cordialement.

Bruno


Avatar
Méta-MCI \(MVP\)
Bonjour !

Je ne sais pas pour les autres OS (symbian, unix, bsd, etc.), mais,
pour Windows, il est impossible d'avoir une fiabilité totale sur un
verrou.

Je prend un exemple : un utilisateur ouvre un fichier ("chien.doc" par
exemple), à partir d'un portable ; puis, il met le portable en veille,
et part en vacances. Au bout d'un certain temps (et selon la
configuration du serveur), le verrou sera libéré, et le fichier à
nouveau modifiable. Maintenant, l'utilisateur revient de vacances, sort
sont CPU de la veille, ferme le document, et valide "enregistrer".
Et... paf le fichier chien .doc !

Autre cas : utilisateur ouvre fichier ; administrateur fait sauter
verrou ("net file /close") ; plus tard, utilisateur enregistre ; plouf !



Ceci étant, dans la plupart des cas (courants), on peut utiliser les
verrous. Sous windows, la commande "Net file" permet de connaitre les
fichiers ouverts (verrouillés), et par qui.


@-salutations
--
Michel Claveau
Avatar
bruno.desthuilliers
On 8 avr, 16:41, "Bruno GUERPILLON" wrote:

(snip rant plus ou moins agréable mais qui ne donne pas forcément
envie d'aider plus)

Maintenant, je reprend ma demande d'origine :

Quelqu'un aurait-il une idée pour récupérer la liste des fichiers ou verts
(comme un lsof sous Unix, ou par la commande Handle.exe de Sysinternals/M$ ).


Il y a en Python des fonctions pour lancer d'autres programmes et en
récupérer les sorties:
http://docs.python.org/lib/module-subprocess.html

Donc si tu connais le programme à appeler en fonction de l'OS, y plus
qu'à...

Avatar
Guillaume
On 8 avr, 16:41, "Bruno GUERPILLON" wrote:

(snip rant plus ou moins agréable mais qui ne donne pas forcément
envie d'aider plus)


Soit dit en passant c'était quand même nécessaire, il a demandé *une*
chose, et a fourni un exemple, et ceux qui ont répondu ont sauté sur
l'exemple, malgré ses rappels à la question.

A titre de comparaison, je viens en disant "Je veux me mettre a Python,
je pense faire un ptit blog pour apprendre, j'ai besoin d'aide pour
blabla" et que tout le monde me disait "Créé ton compte chez
Whatever-blog.truc et t'auras pas à t'emmerder". C'est une réponse, mais
ce n'est pas la question ;)

Alors si en plus on le critique là dessus... moi je dirais plutôt qu'au
moins il a tenté d'éviter le HS sur Oracle où les outils système pour
revenir sur une question concernant Python.

Cordialement,
--
Guillaume

1 2