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

Structure d'un nom de fichier dans la crontab

19 réponses
Avatar
Alain Vaugham
Bonjour la liste,

La crontab ne fait pas ce que je veux...

Pourtant en ligne de commande j'ai bien ce que je veux :
$ pg_dump -a db_mabase > ~/backup/db_mabase_$(date +%Y)$(date +%m)$(date +%=
d)-$(date +%H)$(date +%M)$(date +%S).sql

Par contre, dans la crontab, cette m=C3=AAme syntaxe ne g=C3=A9n=C3=A8re pa=
s le=20
fichier escompt=C3=A9 :
* * * * * pg_dump -a db_mabase > ~/backup/db_mabase_$(date +%Y)$(date +%m)$=
(date +%d)-$(date +%H)$(date +%M)$(date +%S).sql

Je me suis dout=C3=A9 qu'il fallait ajouter des s=C3=A9parateurs de champs.
Comme le man de crontab n'aborde pas le sujet j'avance =C3=A0 t=C3=A2tons a=
vec ce lien :
http://fr.wikipedia.org/wiki/Crontab
J'ai donc test=C3=A9 diff=C3=A9rentes combinaisons de caract=C3=A8res "'\/[=
]{}=20
en m'inspirant =C3=A9galement de la syntaxe employ=C3=A9e par le fichier .p=
rocmail
mais sans succ=C3=A8s.
Il me semble qu'en dehors de la ligne de commande les syntaxes varient
au sein d'une m=C3=AAme distribution.

Est-ce que quelqu'un pourrait m'indiquer le bon tuto pour une Squeeze?

Merci beaucoup par avance.

--=20
Alain Vaugham
Clef GPG : 0xD26D18BC

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/20120806120914.05a8421a@mach07.localdomain

9 réponses

1 2
Avatar
Alain Vaugham
Le Mon, 6 Aug 2012 22:15:41 +0200,
Bzzz a écrit :

On Mon, 6 Aug 2012 21:54:47 +0200
Alain Vaugham wrote:

>
> Non, il ne manque pas le user.
> Avec cette syntaxe dans la crontab, pg_dump déverse bien dans un
> fichier.

Pas trop normal ça, chez moi en dehors de postgres personne ne peut
se connecter sans mot de passe.




[HS]
Dans la configuration de l'authentification client j'ai choisi :
# le mot de passe n'est pas demandé avec la méthode ident sameuser
local all all ident

car je serai bien ennuyé s'il fallait fournir le mot de passe lors de chaque
sauvegarde automatisée/par user.
Sur cette machine, les users se connectent en ssh avec une clef et
Postgres refusera les accès distants.



> C'est seulement le nom de ce fichier qui n'est pas celui
> escompté.

Tu fais un script genre:

#!/bin/sh
TS=$(date +"%Y-%m-%d_%Hh%M")
pg_dump -a db_XYZ > /home/userx/backup/db_XYZ_${TS}.sql

que tu rends exécutable et que tu colles dans
/usr/local/bin/pgbackup_XYZ.sh

et un crontab:
* * * * * postgres if [ -x /usr/local/bin/pgbackup_XYZ.sh ]; then /usr/ local/bin/pgbackup_XYZ.sh; fi




Merci pour cet exemple.
Je garde.


--
Alain Vaugham
Clef GPG : 0xD26D18BC

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Alain Vaugham
Le Mon, 6 Aug 2012 22:15:41 +0200,
Bzzz a écrit :

[...]
Tu fais un script genre:

#!/bin/sh
TS=$(date +"%Y-%m-%d_%Hh%M")
pg_dump -a db_XYZ > /home/userx/backup/db_XYZ_${TS}.sql

que tu rends exécutable et que tu colles dans
/usr/local/bin/pgbackup_XYZ.sh


[...]

Je me pose juste la question suivante :
Pourquoi aller mettre le script dans /usr/local/bin/?
Moi je les mettais dans le home du user et ne touchais jamais au /usr/
Cela me semblait pratique pour sauvegarder/réinstaller.
Est-ce une mauvaise habitude que j'ai prise?
(à une époque je montait mes partitions dans le /home/user/.
Comme sur cette liste on m'a fait remarquer que le /mnt/ était fait po ur ça,
j'ai changé mon habitude.)

Je pensais que remplir le /usr/ était réservé pour l'install ateur Debian.
Quelle est la raison pour laquelle on met ses propres scripts dans les
/usr/share/...
/usr/local/...

--
Alain Vaugham
Clef GPG : 0xD26D18BC

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Thomas Parmelan
Le lundi 06 août 2012 à 12:09, d'après
Alain Vaugham :

Par contre, dans la crontab, cette même syntaxe ne génère pas le
fichier escompté :
* * * * * pg_dump -a db_mabase > ~/backup/db_mabase_$(date +%Y)$(date +%m)$(date +%d)-$(date +%H)$(date +%M)$(date +%S).sql



Comme l'a indiqué un autre contributeur, un seul appel à date suffit :

pg_dump -a db_mabase > ~/backup/db_mabase_$(date +%Y%m%d-%H%M%S).sql

Mais ton problème est surtout que le caractère '%' a une signification
particulière dans une crontab, il faut l'échapper pour lui enlever cette
signification :

* * * * * pg_dump -a db_mabase > ~/backup/db_mabase_$(date +%Y%m%d-%H%M%S).sql

--
Thomas Parmelan

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Charles Plessy
Le Mon, Aug 06, 2012 at 11:10:10PM +0200, Alain Vaugham a écrit :

Je pensais que remplir le /usr/ était réservé pour l'installateur Debian.
Quelle est la raison pour laquelle on met ses propres scripts dans les
/usr/share/...
/usr/local/...



Bonjour,

Debian respecte en général la norme FHS (Filesystem Hierarchy Standard,
http://www.pathname.com/fhs/), et celle-ci garantit que les fichiers dans
/usr/local ne soient jamais changés par une mise à jour du système.

C'est retranscrit dans la section 9.1.2 de la charte Debian.

http://www.debian.org/doc/debian-policy/ch-opersys.html#s-fhs

/usr/local est donc un bon endroit pour installer de manière globale
des programmes.

Amicalement,

--
Charles Plessy
Tsurumi, Kanagawa, Japan

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Alain Vaugham
Le Mon, 6 Aug 2012 23:55:01 +0200,
Thomas Parmelan <parmelan+ a écrit :

Le lundi 06 août 2012 à 12:09, d'après
Alain Vaugham :

> Par contre, dans la crontab, cette même syntaxe ne génèr e pas le
> fichier escompté :
> * * * * * pg_dump -a db_mabase > ~/backup/db_mabase_$(date +%Y)$(date + %m)$(date +%d)-$(date +%H)$(date +%M)$(date +%S).sql

Comme l'a indiqué un autre contributeur, un seul appel à date s uffit :

pg_dump -a db_mabase > ~/backup/db_mabase_$(date +%Y%m%d-%H%M%S).sql

Mais ton problème est surtout que le caractère '%' a une signif ication
particulière dans une crontab, il faut l'échapper pour lui enle ver cette
signification :

* * * * * pg_dump -a db_mabase > ~/backup/db_mabase_$(date +%Y%m%d-%H %M%S).sql




Exact!
Il fallait échapper le '%' dans la crontab pour obtenir le nom de
fichier escompté.

Comme vous le soulignez, je suivrai dorénavant l'avis des autres
contributeurs concernant le nombre d'appels à date.
De même, afin d'éviter de jongler avec les subtiles variations de syntaxes
entre les différents programmes je mettrait les commandes dans des scr ipts
qui eux seront appelés par la crontab.

Merci encore à tous.

--
Alain Vaugham
Clef GPG : 0xD26D18BC

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Alain Vaugham
Le Tue, 7 Aug 2012 07:28:58 +0900,
Charles Plessy a écrit :

Le Mon, Aug 06, 2012 at 11:10:10PM +0200, Alain Vaugham a écrit :
>
> Je pensais que remplir le /usr/ était réservé pour l'ins tallateur Debian.
> Quelle est la raison pour laquelle on met ses propres scripts dans les
> /usr/share/...
> /usr/local/...

Bonjour,



Bonjour,


Debian respecte en général la norme FHS (Filesystem Hierarchy S tandard,
http://www.pathname.com/fhs/), et celle-ci garantit que les fichiers dans
/usr/local ne soient jamais changés par une mise à jour du syst ème.

C'est retranscrit dans la section 9.1.2 de la charte Debian.

http://www.debian.org/doc/debian-policy/ch-opersys.html#s-fhs

/usr/local est donc un bon endroit pour installer de manière globale
des programmes.



Ok, j'ai compris.
Je remarque que /usr/local appartient à root:staff.
Il va falloir que je m'habitue à ce 'staff' dont je n'avais jamais rem arqué
l'existence.

Merci beaucoup pour cette description claire ainsi que pour ces liens.


--
Alain Vaugham
Clef GPG : 0xD26D18BC

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Bzzz
On Mon, 6 Aug 2012 23:10:10 +0200
Alain Vaugham wrote:

Pourquoi aller mettre le script dans /usr/local/bin/?
Moi je les mettais dans le home du user et ne touchais jamais
au /usr/ Cela me semblait pratique pour sauvegarder/réinstaller.



Charles t'as donné la version longue; en version courte c'est
aussi une question de bon sens, parce qu'il est Trare qu'un
script&|pgm ne serve pas _aussi_ à un autre user on le met
dans /usr/local/bin - le 'local' évitant la confusion entre
org=system & org­min.

Est-ce une mauvaise habitude que j'ai prise?



Vi.

(à une époque je montait mes partitions dans le /home/user/.
Comme sur cette liste on m'a fait remarquer que le /mnt/ était
fait pour ça, j'ai changé mon habitude.)



À partir du moment où il n'y en a pas 50, tu peux aussi crée r des
dirs sur la racine, voire les regrouper dans une racine commune
(eg: /NFS & /NFS/XXX, etc).
Perso j'aime bien cette solution + le fait d'utiliser des majuscules
pour les noms, comme ça la confusion est strictement impossible
(ainsi que le doublonnage de noms).

Je pensais que remplir le /usr/ était réservé pour l'insta llateur
Debian.



/usr vi, mais pas /usr/local - parce que la charte Debian étant assez
restrictive (librement parlant, s'entend), il n'est pas rare qu'on
installe des pgms à partir d'un tarball compilé maison & comme dit
plus haut, il faut aussi distinguer l'origine entre system & admin.

Quelle est la raison pour laquelle on met ses propres
scripts dans les /usr/share/...



PAS /usr/share => /usr/local/share.

/usr/local/...



Le partage entre utilisateurs.

JY
--
<Omane> Les hommes, les femmes, quelle différence? on est tous les m êmes
<Neph> Voila une réflexion très Bi, Omane
<Neph> o/

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Sébastien MARQUE
Bonjour,

il me semble bien qu'il faille échapper les caractères % dans la table cron

par exemple:
* * * * * echo $(date +%s) > ~/test_cron

en espérant avoir été utile.

cordialement

seb

Le 06/08/2012 12:09, Alain Vaugham a écrit :
Bonjour la liste,

La crontab ne fait pas ce que je veux...

Pourtant en ligne de commande j'ai bien ce que je veux :
$ pg_dump -a db_mabase> ~/backup/db_mabase_$(date +%Y)$(date +%m)$(date +%d)-$(date +%H)$(date +%M)$(date +%S).sql

Par contre, dans la crontab, cette même syntaxe ne génère pas le
fichier escompté :
* * * * * pg_dump -a db_mabase> ~/backup/db_mabase_$(date +%Y)$(date +%m)$(date +%d)-$(date +%H)$(date +%M)$(date +%S).sql

Je me suis douté qu'il fallait ajouter des séparateurs de champs.
Comme le man de crontab n'aborde pas le sujet j'avance à tâtons avec ce lien :
http://fr.wikipedia.org/wiki/Crontab
J'ai donc testé différentes combinaisons de caractères "'/[ ]{}
en m'inspirant également de la syntaxe employée par le fichier .procmail
mais sans succès.
Il me semble qu'en dehors de la ligne de commande les syntaxes varient
au sein d'une même distribution.

Est-ce que quelqu'un pourrait m'indiquer le bon tuto pour une Squeeze?

Merci beaucoup par avance.




--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Sébastien MARQUE
Oups,

je suis allé trop vite, la réponse avait déjà été donnée ^^

seb

Le 07/08/2012 18:16, Sébastien MARQUE a écrit :
Bonjour,

il me semble bien qu'il faille échapper les caractères % dans la table cron

par exemple:
* * * * * echo $(date +%s) > ~/test_cron

en espérant avoir été utile.

cordialement

seb

Le 06/08/2012 12:09, Alain Vaugham a écrit :
Bonjour la liste,

La crontab ne fait pas ce que je veux...

Pourtant en ligne de commande j'ai bien ce que je veux :
$ pg_dump -a db_mabase> ~/backup/db_mabase_$(date +%Y)$(date
+%m)$(date +%d)-$(date +%H)$(date +%M)$(date +%S).sql

Par contre, dans la crontab, cette même syntaxe ne génère pas le
fichier escompté :
* * * * * pg_dump -a db_mabase> ~/backup/db_mabase_$(date +%Y)$(date
+%m)$(date +%d)-$(date +%H)$(date +%M)$(date +%S).sql

Je me suis douté qu'il fallait ajouter des séparateurs de champs.
Comme le man de crontab n'aborde pas le sujet j'avance à tâtons avec
ce lien :
http://fr.wikipedia.org/wiki/Crontab
J'ai donc testé différentes combinaisons de caractères "'/[ ]{}
en m'inspirant également de la syntaxe employée par le fichier .procmail
mais sans succès.
Il me semble qu'en dehors de la ligne de commande les syntaxes varient
au sein d'une même distribution.

Est-ce que quelqu'un pourrait m'indiquer le bon tuto pour une Squeeze?

Merci beaucoup par avance.







--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
1 2