Bonjour,
Je veut copier / sauvegarder un seul fichier à intervalle régulier via CRON.
En exécutant le script bash suivant
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
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
RECAP='RECAPITULATIF\ GENERAL\ 2017.xlsx'
J'ai également essayé l'écriture suivante:
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.
Partager