Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 31/03/2022, à 10:08

giovanna89

Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

Bonjour,
J'ai un petit soucis avec la mise en place d'une tâche cron
Je voulais automatiser une copie de mes fichiers sur un second disque dur.
J'utilise le logiciel freefilesync sur lequel il est possible de générer un fichier dans lequel il y a les instructions (ex : mise à jour du fichier A vers B, miroir du fichier C vers D,...)
Lorsqu'on double clique sur ce fichier, les actions sont se déroulent en arrière plan. On ne voit pas le logiciel s'ouvrir, tout juste une icône dans la barre de lancement rapide qui s'affiche quand l'action est en cours.

J'ai voulu automatiser cette tâche pour qu'elle se fasse une fois par jour.
Sauf que les tâches ne s’exécutent pas.
Dans mon fichier cron j'ai tenté ces deux commandes :

* * * * * freefilesync /home/toto/.FFS/sauvegarde.ffs_batch
* * * * * /opt/FreeFileSync/FreeFileSync /home/toto/.FFS/sauvegarde.ffs_batch

Je précise que :
_ les deux commande fonctionnent depuis un terminal
_ pour voir si ça fonctionne, j'ai créé des fichiers de test qui auraient dûs être copiés, mais ne le sont pas. Par ailleurs les paramètres ci-dessus devrait lancer la commande toutes les minutes.

Savez-vous d'où pourrait venir le problème ?

Dernière modification par giovanna89 (Le 05/04/2022, à 14:12)

Hors ligne

#2 Le 31/03/2022, à 12:41

Watael

Re : Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

salut,

des chemins incomplets dans le fichier .ffs_batch ? on peut voir le contenu de ce fichier ?


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 31/03/2022, à 13:03

gl38

Re : Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

Tu pourrais aussi à la fin de ta ligne de commande ajouter

>>/home/toto/cron.log 2>&1

et quand la tâche est effectuée (ou pas) voir ce qu'il y a dans cron.log
Cordialement,
Guy

Hors ligne

#4 Le 31/03/2022, à 22:15

jplemoine

Re : Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

ou

>/home/toto/cron.log 2>&1

si tu veux que le fichier de log s'écrase à chaque fois.

Par contre, le fait de mettre * * * * * va, sauf erreur de ma part, l’exécuter toutes les minutes...
S'il prend plus d'1 minute à s’exécuter, ça peut faire du vilain.


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Déconnecté jusqu’à nouvel ordre

Hors ligne

#5 Le 01/04/2022, à 06:11

bruno

Re : Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

Bonjour,

+1 avec @jplemoine

Dans mon fichier cron j'ai tenté ces deux commandes :

Dans quel fichier ? Comment as-tu créé ta tâche cron ?
As-tu précisé le PATH dans ce fichier ? Au minimum :

PATH=/bin:/sbin:/usr/bin:/usr/sbin

#6 Le 01/04/2022, à 10:55

giovanna89

Re : Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

Bonjour à tous, merci pour vos retours.

@Watael, @gl38, @jplemoine, je vous donne un retour ce soir ou demain, je n'ai pas le PC sous la main.
Tout ce que je peux dire tout de suite c'est que le fichier .ffs_batch est un fichier généré par FreeFileSync lorsqu'on enregistre les tâches à exécuter.

Par contre, le fait de mettre * * * * * va, sauf erreur de ma part, l’exécuter toutes les minutes...
S'il prend plus d'1 minute à s’exécuter, ça peut faire du vilain.

Dans l'état actuel, l'action ne prends que quelques secondes, largement inférieure à la minute.

bruno a écrit :

Dans quel fichier ? Comment as-tu créé ta tâche cron ?
As-tu précisé le PATH dans ce fichier ? Au minimum :

PATH=/bin:/sbin:/usr/bin:/usr/sbin

Tout d'abord, je précise que je n'ai jamais mis en place de tâche cron, c'est la première fois.
Pour faire cela, j'ai lancé un terminal, lancé la commande suivante :

crontab -e

il m'a demandé quel éditeur je voulais utiliser, j'ai choisi nano, dans le fichier qui s'est ouvert j'ai juste rajouté la ligne suivante à la suites des commentaires :

* * * * * /opt/FreeFileSync/FreeFileSync /home/toto/.FFS/sauvegarde.ffs_batch

J'ai enregistré et fermé. C'est tout.
Sauf erreur de ma part, il est dit sur la doc ubuntu qu'il s'agit des chemin absolu vers les exécutables et fichiers. Je pense que c'est ce que j'ai fait ?
/opt/FreeFileSync/FreeFileSync et /home/toto/.FFS/sauvegarde.ffs_batch

Je re-précise que cette commande fonctionne à partir d'un terminal
Cordialement

Dernière modification par giovanna89 (Le 01/04/2022, à 10:57)

Hors ligne

#7 Le 01/04/2022, à 11:36

bruno

Re : Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

Oui cela fonctionne à partir d'un terminal quand tu es connectée. Les tâches cron s’exécutent dans un shell non connecté, d'où la nécessité d'ajouter la ligne PATH= que j'ai indiquée dans le crontab ou d'utiliser les emplacement absolu, y compris à l’intérieur du script appelé.

#8 Le 01/04/2022, à 11:39

Watael

Re : Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

Sauf erreur de ma part, il est dit sur la doc ubuntu qu'il s'agit des chemin absolu vers les exécutables et fichiers. Je pense que c'est ce que j'ai fait ?
/opt/FreeFileSync/FreeFileSync et /home/toto/.FFS/sauvegarde.ffs_batch

c'est correct.

Je re-précise que cette commande fonctionne à partir d'un terminal

le PATH de cron est réduit par rapport à celui du terminal, cron peut donc ne pas y trouver le chemin de certains fichiers, qui sont par contre accessibles depuis le terminal.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#9 Le 01/04/2022, à 11:52

bruno

Re : Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

Watael a écrit :

le PATH de cron est réduit par rapport à celui du terminal,

Ce n'est pas vraiment la raison. La variable PATH est définie dans des fichiers qui ne sont sourcés que lors de la connexion de l'utilisateur à une console ou à une interface graphique (terminal). Une tâche cron est exécutée sans connexion de l'utilisateur, dans un shell non connecté (non-login) et non interactif. Dans ce cas la variable PATh n'existe tout simplement pas,il faut la définir.

Dernière modification par bruno (Le 01/04/2022, à 11:55)

#10 Le 01/04/2022, à 12:10

MicP

Re : Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

Bonjour

Après avoir lancé la ligne de commande suivante :

crontab -e

, ajoute la ligne suivante à la fin du fichier :

* * * * * env > $HOME/retourCrontab.txt

une fois que la ligne a été ajoutée,
et toujours depuis le même compte utilisateur,
lance la ligne de commande suivante :

watch cat $HOME/retourCrontab.txt

, et attends une minute pour voir s'afficher les variables d'environnements qui sont utilisées.

Voilà ce que ça donne depuis mon compte utilisateur michel sur la machine ubu20043lts

Toutes les 2,0s: cat retourCrontab.txt        ubu20043lts: Fri Apr  1 13:27:50 2022

HOME=/home/michel
LOGNAME=michel
PATH=/usr/bin:/bin
LANG=fr_FR.UTF-8
SHELL=/bin/sh
PWD=/home/michel

Dernière modification par MicP (Le 01/04/2022, à 12:30)

Hors ligne

#11 Le 01/04/2022, à 12:20

Watael

Re : Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

bruno a écrit :
Watael a écrit :

le PATH de cron est réduit par rapport à celui du terminal,

Ce n'est pas vraiment la raison. La variable PATH est définie dans des fichiers qui ne sont sourcés que lors de la connexion de l'utilisateur à une console ou à une interface graphique (terminal). Une tâche cron est exécutée sans connexion de l'utilisateur, dans un shell non connecté (non-login) et non interactif. Dans ce cas la variable PATh n'existe tout simplement pas,il faut la définir.

si si, il y a bien une variable PATH pour cron.
ajoute un simple * * * * * echo "$PATH" pour l'observer.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#12 Le 01/04/2022, à 12:24

bruno

Re : Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

Ah oui tu as raison en utilisant crontab -e (dont je ne me sert jamais) il y a bien /usr/bin:/bin chez moi. Il faudra que je creuse pour savoir où c'est défini. Mais c'est généralement insuffisant.

Et si j'avais lu l'intégralité de la page de man :

man 5 crontab a écrit :

Several environment variables are set up automatically by the cron(8) daemon. SHELL is set to /bin/sh, and LOGNAME and HOME are set from the /etc/passwd line of the crontab's owner. PATH is set to "/usr/bin:/bin".

#13 Le 01/04/2022, à 12:35

MicP

Re : Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

On remarquera aussi qu'il n'y a pas de variable USER (mais il y a une variable LOGNAME)
et si on comptait utiliser le shell bash, il faudra faire attention au fait que le shell utilisé est /bin/sh (qui est un lien vers /bin/dash)
ce n'est donc pas l'interpréteur bash qui est utilisé.

Dernière modification par MicP (Le 01/04/2022, à 12:36)

Hors ligne

#14 Le 01/04/2022, à 12:43

Watael

Re : Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

MicP a écrit :

ce n'est donc pas l'interpréteur bash qui est utilisé.

pour les commandes qui sont directement sur la ligne; les scripts utilisent toujours le shebang pour déterminer quel interpréteur utiliser.
il y aurait quelques scripts python qui ne fonctionneraient sinon plus aussi bien. lol


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#15 Le 01/04/2022, à 12:43

bruno

Re : Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

@MicP : est-ce que tu sais où est définie cette valeur par défaut :

man 5 crontab a écrit :

PATH is set to "/usr/bin:/bin".

Je ne trouve cela nulle part dans les fichiers de configuration sous /etc

EDIT : j'ai trouvé, en fait c'est codé en dur : https://salsa.debian.org/debian/cron/bl … ames.h#L77
Bon merci Watael et MicP, j'ai appris un truc au passage wink

Dernière modification par bruno (Le 01/04/2022, à 12:54)

#16 Le 01/04/2022, à 12:54

MicP

Re : Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

bruno a écrit :

… est-ce que tu sais où est définie cette valeur par défaut …

Non,  smile mais … unix.stackexchange.com -> Where is cron's PATH set?

=======
[HORS SUJET] (mais si besoin…)

Pour pouvoir utiliser les notifications (commande notify-send) sur mon écran pour mon compte utilisateur (dont l'UID est 1000)
dans la crontab, juste après les commentaires originaux, j'ai ajouté les lignes suivantes :

#################################
# Variables ajoutées pour avoir accès à l'interface graphique
DISPLAY=:0.0
XDG_RUNTIME_DIR=/run/user/1000
#################################

Si besoin, on peut aussi y ajouter une ligne pour redéfinir la valeur assignée à la variable PATH

[/HORS SUJET]

Dernière modification par MicP (Le 01/04/2022, à 13:06)

Hors ligne

#17 Le 01/04/2022, à 14:20

jplemoine

Re : Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

Juste une remarque,

crontab -e

c'est "old school"
Dans les version récentes, on ajoute un fichier (peut importe le nom) dans /etc/cron.d
A l'interieur, la syntaxe est identique sauf qu'il faut préciser l'utilisateur

* * * * * /opt/FreeFileSync/FreeFileSync /home/toto/.FFS/sauvegarde.ffs_batch

devient

* * * * * root /opt/FreeFileSync/FreeFileSync /home/toto/.FFS/sauvegarde.ffs_batch

Attention à un autre point :
En cron, il y a une copie du path qui est copiée (secure path ou un truc du genre) vers le path. C'est donc dans le script qu'il faut modifier la variable path.
Or, le script est fourni par "l'éditeur" : il faut donc peut-être passer par un script "maison" qui appelerait le script "éditeur" après avoir modifié le path.


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Déconnecté jusqu’à nouvel ordre

Hors ligne

#18 Le 01/04/2022, à 14:25

NicoApi73

Re : Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

Bonjour,

/!\ il y a une différence entre les 2 commandes suivantes, qui sont valides :

crontab -e
sudo crontab -e

La première lance gère les tâches comme utilisateur (celui qui a exécuté la commande crontab), la seconde gère les tâches comme root (ou superutilisateur).

Donc le problème ici n'est peut être qu'un problème de permission...

Hors ligne

#19 Le 01/04/2022, à 14:26

bruno

Re : Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

@jplemoine : je fais comme cela depuis toujours en précisant le PATH dans le fichier crontab. Mais le plus souvent je place directement les scripts dans /etc/cron.daily (hourly, monthly, etc.) et là pas besoin de préciser le PATH, il est déjà correctement défini dans /etc/crontab

crontab -e, c'est utile quand l'utilisateur ne peut pas acquérir les privilèges root.

#20 Le 01/04/2022, à 15:37

MicP

Re : Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

S'il s'agit d'une machine qui fonctionne 24x7 cron pourrait convenir,
sinon, il vaudra peut-être mieux utiliser anacron

Quelques liens :

askubuntu.com -> Confused about relationship between cron and anacron

fr.linux-console.net -> Cron Vs Anacron: Comment planifier des tâches avec Anacron sous Linux

tecmint.com -> Cron Vs Anacron: How to Schedule Jobs Using Anacron on Linux

Dernière modification par MicP (Le 01/04/2022, à 15:39)

Hors ligne

#21 Le 01/04/2022, à 15:43

giovanna89

Re : Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

@MicP
Il s'agit d'un PC de bureau qui fonctionne en journée et est éteint la nuit.

Lol, vous m'avez un peu perdu, du coup je ne sais plus trop ce que je dois faire.
De quels retours avez-vous besoin dans un premier temps ?

Dernière modification par giovanna89 (Le 01/04/2022, à 15:46)

Hors ligne

#22 Le 01/04/2022, à 15:46

nany

Re : Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

Bonjour,



bruno a écrit :

Mais le plus souvent je place directement les scripts dans /etc/cron.daily (hourly, monthly, etc.) et là pas besoin de préciser le PATH, il est déjà correctement défini dans /etc/crontab

Ou dans /etc/anacrontab. wink

En ligne

#23 Le 01/04/2022, à 15:47

nany

Re : Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

giovanna89 a écrit :

Lol, vous m'avez un peu perdu, du coup je ne sais plus trop ce que je dois faire.
De quels retours avez-vous besoin dans un premier temps ?

cat /home/toto/.FFS/sauvegarde.ffs_batch

?

En ligne

#24 Le 02/04/2022, à 13:52

giovanna89

Re : Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

Bonjour,

Alors voici le contenu du fichier .fff_batch :

<?xml version="1.0" encoding="utf-8"?>
<FreeFileSync XmlType="BATCH" XmlFormat="17">
    <Compare>
        <Variant>TimeAndSize</Variant>
        <Symlinks>Exclude</Symlinks>
        <IgnoreTimeShift/>
    </Compare>
    <Synchronize>
        <Variant>Mirror</Variant>
        <DetectMovedFiles>false</DetectMovedFiles>
        <DeletionPolicy>RecycleBin</DeletionPolicy>
        <VersioningFolder Style="Replace"/>
    </Synchronize>
    <Filter>
        <Include>
            <Item>*</Item>
        </Include>
        <Exclude>
            <Item>*/.Trash-*/</Item>
            <Item>*/.recycle/</Item>
        </Exclude>
        <TimeSpan Type="None">0</TimeSpan>
        <SizeMin Unit="None">0</SizeMin>
        <SizeMax Unit="None">0</SizeMax>
    </Filter>
    <FolderPairs>
        <Pair>
            <Left>/home/toto/Mes_documents</Left>
            <Right>/media/toto/Mes_documents</Right>
        </Pair>
    </FolderPairs>
    <Errors Ignore="false" Retry="0" Delay="5"/>
    <PostSyncCommand Condition="Completion"/>
    <LogFolder/>
    <EmailNotification Condition="Always"/>
    <Batch>
        <ProgressDialog Minimized="true" AutoClose="true"/>
        <ErrorDialog>Show</ErrorDialog>
        <PostSyncAction>None</PostSyncAction>
    </Batch>
</FreeFileSync>

Hors ligne

#25 Le 02/04/2022, à 15:25

giovanna89

Re : Sauvegarde automatique batch FreeFileSync via cron [RESOLU]

@MicP, voici le retour de ta manipulation :

Toutes les 0,2s : cat /home/toto/retourCrontab.txt

HOME=/home/toto
LOGNAME=toto
PATH=/usr/bin:/bin
LANG=fr_FR.UTF-8
SHELL=/bin/sh
PWD=/home/toto

Hors ligne