Bonjour,

Je veut copier / sauvegarder un seul fichier à intervalle régulier via CRON.

En exécutant le script bash suivant

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash
 
DATEENVOI=`date +'%Y-%m-%d_%H-%M-%S'`
 
# le nom du fichier à sauvegarder contient deux espaces!
RECAP='RECAPITULATIF\ GENERAL\ 2017.xlsx'
 
# Replace space by backslash space !
#RECAP=${RECA// /\\ }
#echo $RECAP
 
SOURCEFILE='/home/laurent/Doc-Pujol/RECAPITULATIF/'$RECAP
#echo $SOURCEFILE
 
 
DESTDIR=/home/laurent/Doc-Pujol/BACKUP_RECAP
 
 
#echo $DESTDIR/$DATEENVOI.xlsx
#echo $SOURCEFILE $DESTDIR/$DATEENVOI.xlsx
 
cp $SOURCEFILE $DESTDIR/$DATEENVOI.xlsx
 
#echo $DESTDIR/$DATEENVOI/
 
exit
je reçoit le message d'erreur suivant:

cp: la cible «*/home/laurent/Doc-Pujol/BACKUP_RECAP/2017-05-04_11-47-02.xlsx*» n'est pas un répertoire

Le fichier de destination doit bel et bien porter le nom 2017-05-04_11-47-02.xlsx hors dans le message il me parle d'un répertoire!
Remarque : La date et l'heure donc le nom du fichier changent évidement à chaque sauvegarde...

Quand j'exécute la commande suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
cp /home/laurent/Doc-Pujol/RECAPITULATIF/RECAPITULATIF\ GENERAL\ 2017.xlsx /home/laurent/Doc-Pujol/BACKUP_RECAP/2017-05-04_11-47-02.xlsx
elle est bel et bien exécuté, sans message d'erreur.

L'erreur doit y venir de la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
RECAP='RECAPITULATIF\ GENERAL\ 2017.xlsx'
J'ai également essayé l'écriture suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
RECAP='RECAPITULATIF GENERAL 2017.xlsx'
mais le message d'erreur est le même!

Je me suis amusé à renommer, temporairement, mon fichier, qui est sur un serveur SAMBA en RECAPITULATIF_GENERAL_2017.xlsx en adaptent également le script et la, la sauvegarde fonctionne!
Je veut quand même laisser la possibilité aux utilisateurs windows de mettre des espaces dans les noms des fichiers et c'est pour ça que je cherche une solution plus flexible à mon problème.

Que doit je modifier dans mon script pour le faire fonctionner correctement?

Merci d'avance pour votre aide.