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 11/01/2010, à 12:01

gaffe_82

[Rsync+BASH] Utiliser des noms de fichiers/dossiers espaces

Bonjour à tous,

Voici mon souci  : j'essaie de faire un script utilisant rsync pour sauvegarder un certain nombre de répertoires.

Voici mon script (backupRsync.sh) :

#!/bin/bash

dest="/tmp/BACKUP/"
exclude="/tmp/DATA/Mes\ documents/Mes\ videos/*"
OPTIONS="-rltgoDv --ignore-errors --force"
# FIN DES PARAMETRES A ADAPTER

if [ ! -d ${dest} ]
then
echo "*** Le repertoire ${dest} n'existe pas. Creation du repertoire ${dest}"
mkdir ${dest}
fi

IFS=$'\n';
for d in `cat /tmp/DATA/listfile`; do
	echo "### $(date +%d-%m-%y\ %H:%M:%S) : Debut de la sauvegarde de ${d} vers ${dest}..." 
	rsync  ${OPTIONS} --delete-excluded ${exclude} "${d}" ${dest}
	echo "### $(date +%d-%m-%y\ %H:%M:%S) : Fin de la sauvegarde de ${d} vers ${dest} !"
done

echo "### $(date +%d-%m-%y\ %H:%M:%S) : Fin !"
exit

Et mon fichier listfile :

/tmp/DATA/Dev
/tmp/DATA/Mes documents

Et voici l'erreur que j'ai lors du lancement du fichier :

-sh-3.2$ ./backup.ksh
### 11-01-10 12:04:24 : Debut de la sauvegarde de /tmp/DATA/Dev vers /tmp/BACKUP/...
building file list ... rsync: link_stat "/tmp/DATA/Mes\" failed: No such file or directory (2)
rsync: link_stat "/tmp/DATA/documents/Mes\" failed: No such file or directory (2)
rsync: link_stat "/tmp/DATA/videos/*" failed: No such file or directory (2)
done

sent 100 bytes  received 20 bytes  240.00 bytes/sec
total size is 0  speedup is 0.00
rsync error: some files could not be transferred (code 23) at main.c(892) [sender=2.6.8]
### 11-01-10 12:04:24 : Fin de la sauvegarde de /tmp/DATA/Dev vers /tmp/BACKUP/ !
### 11-01-10 12:04:24 : Debut de la sauvegarde de /tmp/DATA/Mes documents vers /tmp/BACKUP/...
building file list ... rsync: link_stat "/tmp/DATA/Mes\" failed: No such file or directory (2)
rsync: link_stat "/tmp/DATA/documents/Mes\" failed: No such file or directory (2)
rsync: link_stat "/tmp/DATA/videos/*" failed: No such file or directory (2)
done

sent 162 bytes  received 20 bytes  364.00 bytes/sec
total size is 0  speedup is 0.00
rsync error: some files could not be transferred (code 23) at main.c(892) [sender=2.6.8]
### 11-01-10 12:04:24 : Fin de la sauvegarde de /tmp/DATA/Mes documents vers /tmp/BACKUP/ !
### 11-01-10 12:04:24 : Fin !

Le problème c'est que je voudrais que Bash interprète correctement mes noms de répertoire contenant un espace (comme dans '/tmp/DATA/Mes documents') mais rsync ne le fait pas et cherche à synchroniser le répertoire '/tmp/DATA/documents/Mes\'

Merci pour votre aide ! wink

Hors ligne

#2 Le 11/01/2010, à 12:11

sinbad83

Re : [Rsync+BASH] Utiliser des noms de fichiers/dossiers espaces

Bonjour,
un bon conseil, bannis tous les espaces pour tous les baptêmes de fichiers ou de Dossiers, que ce soit en Linux ou en Windows.
Ta ligne

exclude="/tmp/DATA/Mes\ documents/Mes\ videos/*"

est bonne, mais celle-là ne l'est pas

/tmp/DATA/Mes documents

Le message d'erreur es l'illustration du problème des espaces.


La connaissance n'est pas une denrée rare, il faut la partager avec les autres.
Linux registered #484707
Site: www.coursinforev.org/doku.php
Desktop AMD Ryzen 5-3600, RAM 16GB, Ubuntu 20.10,   HP Pavillon G6 Ubuntu 20.10 et Ten, Serveur Ubuntu 18.04

Hors ligne

#3 Le 11/01/2010, à 13:54

gaffe_82

Re : [Rsync+BASH] Utiliser des noms de fichiers/dossiers espaces

Oui, l'idéal serait de supprimer tous les espaces...
Sauf que je cherche un moyen pour palier à ce problème et les utiliser roll

Hors ligne

#4 Le 11/01/2010, à 14:05

credenhill

Re : [Rsync+BASH] Utiliser des noms de fichiers/dossiers espaces

hello
utiliser des "
$ ls -l /tmp/aa bb
ls: cannot access /tmp/aa: No such file or directory
ls: cannot access bb: No such file or directory
$
$ ls /tmp/"aa bb"
xxx
$

Hors ligne

#5 Le 11/01/2010, à 14:09

gaffe_82

Re : [Rsync+BASH] Utiliser des noms de fichiers/dossiers espaces

C'est déjà le cas :
IFS=$'\n';
for d in `cat /tmp/DATA/listfile`; do
    echo "### $(date +%d-%m-%y\ %H:%M:%S) : Debut de la sauvegarde de ${d} vers ${dest}..."
    rsync  ${OPTIONS} --delete-excluded ${exclude} "${d}" ${dest}
    echo "### $(date +%d-%m-%y\ %H:%M:%S) : Fin de la sauvegarde de ${d} vers ${dest} !"
done

Mais ça ne semble pas marcher avec rsync...

Dernière modification par gaffe_82 (Le 11/01/2010, à 14:10)

Hors ligne

#6 Le 11/01/2010, à 16:14

credenhill

Re : [Rsync+BASH] Utiliser des noms de fichiers/dossiers espaces

essaye avec eval

eval  rsync  ${OPTIONS} --delete-excluded ${exclude} "${d}" ${dest}

http://lists.samba.org/archive/rsync/2002-January/001219.html

Hors ligne

#7 Le 11/01/2010, à 16:59

gaffe_82

Re : [Rsync+BASH] Utiliser des noms de fichiers/dossiers espaces

Ca marche !

Voici le bout de code que j'ai maintenant.

#!/bin/bash

dest="/tmp/BACKUP/"
exclude="/tmp/DATA/Mes\ documents/Mes\ videos/"
OPTIONS="-rltgoDv --ignore-errors --force"

if [ ! -d ${dest} ]
then
echo "*** Le repertoire ${dest} n'existe pas. Creation du repertoire ${dest}"
mkdir ${dest}
fi

IFS=$'\n';
for d in `cat /tmp/DATA/listfile`; do
IFS=$' ';
        echo "### $(date +%d-%m-%y\ %H:%M:%S) : Debut de la sauvegarde de ${d} vers ${dest}..."
        eval  rsync  ${OPTIONS} --exclude=${exclude} "${d}" ${dest}
        echo "### $(date +%d-%m-%y\ %H:%M:%S) : Fin de la sauvegarde de ${d} vers ${dest} !"
done

echo "### $(date +%d-%m-%y\ %H:%M:%S) : Fin !"
exit

Le problème c'est que mon répertoire /tmp/DATA/Mes\ documents/Mes\ videos/ n'est pas exclu de la sauvegarde.

Par contre, si je mets :
exclude="Mes\ videos/"

Là, c'est bon cool

Du coup, ma question est :
Pourquoi est-ce que je ne peux pas définir un chemin complet à exclure ?
Car dans le cas où j'ai un nom de répertoire dans deux sous-dossiers différents, comment faire pour les différencier...
Ai-je été clair ? hmm

Hors ligne