Je fais des scripts bash pour traiter des fichiers :
for i in /home/denis/*.avi; do
mencoder [...]
scp i denis@192.168.2.3:/var/media-center
done
Je souhaite placer ça dans une tâche cron. Ma question est de savoir
comment faire pour éviter de traiter les fichiers qui sont en cours
d'utilisation, de création ou même de transfert ? Est-ce que le système
verrouille les fichiers utilisés par un autre processus ? Les fichiers
arrivent dans /home/denis par scp via une autre tâche cron, mais lancée
sur depuis un autre poste et je ne voudrais pas qu'ils soient traités
tant que le transfert n'est pas fini. Merci de vos conseils
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Bruno Tréguier
Le 23/03/2010 à 20:46, denist a écrit :
Bonjour
Bonsoir,
Je fais des scripts bash pour traiter des fichiers :
for i in /home/denis/*.avi; do mencoder [...] scp i :/var/media-center done
Je souhaite placer ça dans une tâche cron. Ma question est de savoir comment faire pour éviter de traiter les fichiers qui sont en cours d'utilisation, de création ou même de transfert ? Est-ce que le système verrouille les fichiers utilisés par un autre processus ?
Non. C'est à vous de prévoir vos verrouillages. En shell, si vous êtes sous Linux, vous pouvez le faire par exemple avec flock(1).
Quand vous parlez d'utilisation, de quoi s'agit-il ? Il n'y a aucun problème à commencer à transcoder un fichier s'il n'est, par ailleurs, accédé qu'en lecture (ça fera juste 2 lectures simultanées)...
Les fichiers arrivent dans /home/denis par scp via une autre tâche cron, mais lancée sur depuis un autre poste et je ne voudrais pas qu'ils soient traités tant que le transfert n'est pas fini. Merci de vos conseils
Le plus simple, à mon avis, est de transférer vos fichiers avec un autre suffixe (genre ".avi.part"), et de les renommer (via un ssh consécutif à votre scp) une fois qu'ils ont été complètement téléchargés. Là au moins, vous êtes sûr que vous ne commencerez à encoder que des fichiers complets.
Cordialement,
Bruno
Le 23/03/2010 à 20:46, denist a écrit :
Bonjour
Bonsoir,
Je fais des scripts bash pour traiter des fichiers :
for i in /home/denis/*.avi; do
mencoder [...]
scp i denis@192.168.2.3:/var/media-center
done
Je souhaite placer ça dans une tâche cron. Ma question est de savoir
comment faire pour éviter de traiter les fichiers qui sont en cours
d'utilisation, de création ou même de transfert ? Est-ce que le système
verrouille les fichiers utilisés par un autre processus ?
Non. C'est à vous de prévoir vos verrouillages. En shell, si vous êtes
sous Linux, vous pouvez le faire par exemple avec flock(1).
Quand vous parlez d'utilisation, de quoi s'agit-il ? Il n'y a aucun
problème à commencer à transcoder un fichier s'il n'est, par ailleurs,
accédé qu'en lecture (ça fera juste 2 lectures simultanées)...
Les fichiers
arrivent dans /home/denis par scp via une autre tâche cron, mais lancée
sur depuis un autre poste et je ne voudrais pas qu'ils soient traités
tant que le transfert n'est pas fini. Merci de vos conseils
Le plus simple, à mon avis, est de transférer vos fichiers avec un autre
suffixe (genre ".avi.part"), et de les renommer (via un ssh consécutif à
votre scp) une fois qu'ils ont été complètement téléchargés. Là au
moins, vous êtes sûr que vous ne commencerez à encoder que des fichiers
complets.
Je fais des scripts bash pour traiter des fichiers :
for i in /home/denis/*.avi; do mencoder [...] scp i :/var/media-center done
Je souhaite placer ça dans une tâche cron. Ma question est de savoir comment faire pour éviter de traiter les fichiers qui sont en cours d'utilisation, de création ou même de transfert ? Est-ce que le système verrouille les fichiers utilisés par un autre processus ?
Non. C'est à vous de prévoir vos verrouillages. En shell, si vous êtes sous Linux, vous pouvez le faire par exemple avec flock(1).
Quand vous parlez d'utilisation, de quoi s'agit-il ? Il n'y a aucun problème à commencer à transcoder un fichier s'il n'est, par ailleurs, accédé qu'en lecture (ça fera juste 2 lectures simultanées)...
Les fichiers arrivent dans /home/denis par scp via une autre tâche cron, mais lancée sur depuis un autre poste et je ne voudrais pas qu'ils soient traités tant que le transfert n'est pas fini. Merci de vos conseils
Le plus simple, à mon avis, est de transférer vos fichiers avec un autre suffixe (genre ".avi.part"), et de les renommer (via un ssh consécutif à votre scp) une fois qu'ils ont été complètement téléchargés. Là au moins, vous êtes sûr que vous ne commencerez à encoder que des fichiers complets.
Cordialement,
Bruno
denist
Le Tue, 23 Mar 2010 22:07:57 +0100, Bruno Tréguier a écrit :
Le 23/03/2010 à 20:46, denist a écrit :
Bonjour
Bonsoir,
Je fais des scripts bash pour traiter des fichiers :
for i in /home/denis/*.avi; do mencoder [...] scp i :/var/media-center done
Je souhaite placer ça dans une tâche cron. Ma question est de savoir comment faire pour éviter de traiter les fichiers qui sont en cours d'utilisation, de création ou même de transfert ? Est-ce que le système verrouille les fichiers utilisés par un autre processus ?
Non. C'est à vous de prévoir vos verrouillages. En shell, si vous êtes sous Linux, vous pouvez le faire par exemple avec flock(1).
Quand vous parlez d'utilisation, de quoi s'agit-il ? Il n'y a aucun problème à commencer à transcoder un fichier s'il n'est, par ailleurs, accédé qu'en lecture (ça fera juste 2 lectures simultanées)...
En fait je crains que le fichier ne soit pas lisible par le script, par exemple si le transfert a démarré quasi simultanément que la tache cron, et il n'y a pas que des commandes mencoder (c'était pour l'exemple), les fichiers sont déplacés, renommés, screencap etc.
Les fichiers arrivent dans /home/denis par scp via une autre tâche cron, mais lancée sur depuis un autre poste et je ne voudrais pas qu'ils soient traités tant que le transfert n'est pas fini. Merci de vos conseils
Le plus simple, à mon avis, est de transférer vos fichiers avec un autre suffixe (genre ".avi.part"), et de les renommer (via un ssh consécutif à votre scp) une fois qu'ils ont été complètement téléchargés. Là au moins, vous êtes sûr que vous ne commencerez à encoder que des fichiers complets.
Oui je n'y avais pas pensé. mais je me demande si le même problème ne peut pas se reproduire pendant le mv du .part vers .avi ? J'imagine que je chipote et je ne sais pas comment mv se comporte à ce niveau.
Au sujet de flock, d'après vous quand-est ce que je devrais l'appliquer je me mélange un peu j'ai lu le man mais...: flock /tmp/lockfile -c scp i :/var/media-center ? aurait j'imagine pour conséquence de verrouiller le fichier sur le pc source, mais comment le verrouiller aussi sur le pc distant ? Je n'ai pas trouvé beaucoup d'exemple.
En tous cas je vais appliquer un renommage, ça réduira beaucoup les risques. Merci.
Cordialement,
Bruno
Le Tue, 23 Mar 2010 22:07:57 +0100, Bruno Tréguier a écrit :
Le 23/03/2010 à 20:46, denist a écrit :
Bonjour
Bonsoir,
Je fais des scripts bash pour traiter des fichiers :
for i in /home/denis/*.avi; do
mencoder [...]
scp i denis@192.168.2.3:/var/media-center done
Je souhaite placer ça dans une tâche cron. Ma question est de savoir
comment faire pour éviter de traiter les fichiers qui sont en cours
d'utilisation, de création ou même de transfert ? Est-ce que le système
verrouille les fichiers utilisés par un autre processus ?
Non. C'est à vous de prévoir vos verrouillages. En shell, si vous êtes
sous Linux, vous pouvez le faire par exemple avec flock(1).
Quand vous parlez d'utilisation, de quoi s'agit-il ? Il n'y a aucun
problème à commencer à transcoder un fichier s'il n'est, par ailleurs,
accédé qu'en lecture (ça fera juste 2 lectures simultanées)...
En fait je crains que le fichier ne soit pas lisible par le script, par
exemple si le transfert a démarré quasi simultanément que la tache cron,
et il n'y a pas que des commandes mencoder (c'était pour l'exemple), les
fichiers sont déplacés, renommés, screencap etc.
Les fichiers
arrivent dans /home/denis par scp via une autre tâche cron, mais lancée
sur depuis un autre poste et je ne voudrais pas qu'ils soient traités
tant que le transfert n'est pas fini. Merci de vos conseils
Le plus simple, à mon avis, est de transférer vos fichiers avec un autre
suffixe (genre ".avi.part"), et de les renommer (via un ssh consécutif à
votre scp) une fois qu'ils ont été complètement téléchargés. Là au
moins, vous êtes sûr que vous ne commencerez à encoder que des fichiers
complets.
Oui je n'y avais pas pensé. mais je me demande si le même problème ne
peut pas se reproduire pendant le mv du .part vers .avi ? J'imagine que
je chipote et je ne sais pas comment mv se comporte à ce niveau.
Au sujet de flock, d'après vous quand-est ce que je devrais l'appliquer
je me mélange un peu j'ai lu le man mais...:
flock /tmp/lockfile -c scp i denis@192.168.2.3:/var/media-center ?
aurait j'imagine pour conséquence de verrouiller le fichier sur le pc
source, mais comment le verrouiller aussi sur le pc distant ? Je n'ai pas
trouvé beaucoup d'exemple.
En tous cas je vais appliquer un renommage, ça réduira beaucoup les
risques. Merci.
Le Tue, 23 Mar 2010 22:07:57 +0100, Bruno Tréguier a écrit :
Le 23/03/2010 à 20:46, denist a écrit :
Bonjour
Bonsoir,
Je fais des scripts bash pour traiter des fichiers :
for i in /home/denis/*.avi; do mencoder [...] scp i :/var/media-center done
Je souhaite placer ça dans une tâche cron. Ma question est de savoir comment faire pour éviter de traiter les fichiers qui sont en cours d'utilisation, de création ou même de transfert ? Est-ce que le système verrouille les fichiers utilisés par un autre processus ?
Non. C'est à vous de prévoir vos verrouillages. En shell, si vous êtes sous Linux, vous pouvez le faire par exemple avec flock(1).
Quand vous parlez d'utilisation, de quoi s'agit-il ? Il n'y a aucun problème à commencer à transcoder un fichier s'il n'est, par ailleurs, accédé qu'en lecture (ça fera juste 2 lectures simultanées)...
En fait je crains que le fichier ne soit pas lisible par le script, par exemple si le transfert a démarré quasi simultanément que la tache cron, et il n'y a pas que des commandes mencoder (c'était pour l'exemple), les fichiers sont déplacés, renommés, screencap etc.
Les fichiers arrivent dans /home/denis par scp via une autre tâche cron, mais lancée sur depuis un autre poste et je ne voudrais pas qu'ils soient traités tant que le transfert n'est pas fini. Merci de vos conseils
Le plus simple, à mon avis, est de transférer vos fichiers avec un autre suffixe (genre ".avi.part"), et de les renommer (via un ssh consécutif à votre scp) une fois qu'ils ont été complètement téléchargés. Là au moins, vous êtes sûr que vous ne commencerez à encoder que des fichiers complets.
Oui je n'y avais pas pensé. mais je me demande si le même problème ne peut pas se reproduire pendant le mv du .part vers .avi ? J'imagine que je chipote et je ne sais pas comment mv se comporte à ce niveau.
Au sujet de flock, d'après vous quand-est ce que je devrais l'appliquer je me mélange un peu j'ai lu le man mais...: flock /tmp/lockfile -c scp i :/var/media-center ? aurait j'imagine pour conséquence de verrouiller le fichier sur le pc source, mais comment le verrouiller aussi sur le pc distant ? Je n'ai pas trouvé beaucoup d'exemple.
En tous cas je vais appliquer un renommage, ça réduira beaucoup les risques. Merci.