[Linux-31] Fichiers non supprimés avec rsync

Claude Micouin mlnglst at free.fr
Mer 18 Juin 22:58:53 CEST 2014


Bonjour. Il m'arrive un truc bizarre avec rsync. 		

	Je me suis fait un petit script pour faire des sauvegardes sur un
disque dur USB mais certains fichiers ne sont pas supprimés sur la
sauvegarde alors qu'ils n'existent plus sur le disque dur interne
(source). 	 
	On pourrait penser à l'absence des options --del et --delete-excluded :
or elles y sont bien et le problème se pose pour certains répertoires et
pas pour d'autres.

Je vais détailler un peu plus la configuration et le principe du script
(le script lui-même est en fin de mail ainsi que les parties
intéressantes des messages de la console).

	Le disque dur interne contient 3 partitions : sda4 pour la racine et
sda2 pour le home; sda1 étant la racine d'une Ubuntu 13.10 qui n'est
pas montée automatiquement. La sauvegarde se fait sur un disque dur USB
contenant aussi 3 partitions : sdf1, 2 et 4 correspondantes aux 3 sda.

	Au démarrage du script, les 4 partitions sda1, sdf2, sdf4 et sdf1 sont
montées respectivement sur les répertoires : /Ubuntu_13-10/ 
/mnt/Clone_disque_dur/ /mnt/Clone_disque_dur/home/
/mnt/Clone_disque_dur/Ubuntu_13-10/

	Puis après quelques vérifications sur le montage des partitions et
l'existence des répertoires de sauvegarde, la commande suivante est
lancée : nice -n 19 rsync -av --progress --del    --delete-excluded 
--exclude 'media' --exclude 'proc' --exclude 'tmp' --exclude 'sys' 
--exclude 'mnt' --exclude 'dev'  /  /mnt/Clone_disque_dur/

	En résumé, on sauvegarde / sur /mnt/Clone_disque_dur/ en excluant les
répertoires media proc tmp sys mnt et dev et mettant bien les options
--del et --delete-excluded

Voilà maintenant comment se manifeste le problème:

	Je copie un fichier sur chaque partition du disque dur interne:
fichier_test_1 sur sda1 (/Ubuntu_13-10/usr/local/fichier_test_1)
fichier_test_2 sur sda2 (/home/claude/fichier_test_2) fichier_test_4
sur sda4 (/usr/local/fichier_test_4)

Je lance le script clone_disque_dur sous root.

Les fichiers fichier_test_1, 2 et 3 sont présents au bon endroit sur le
DD externe :

fichier_test_1 sur sdf1 (/mnt/Clone_disque_dur/Ubuntu_13-10/usr/local/fichier_test_1)

fichier_test_2 sur sdf2 (/mnt/Clone_disque_dur/home/claude/fichier_test_2)

fichier_test_4 sur sdf4 (/mnt/Clone_disque_dur/usr/local/fichier_test_4)

Jusque-là, tout va bien.

Maintenant, je supprime les fichiers fichier_test_1, 2 et 3 sur le
disque dur interne et je relance le script clone_disque_dur

Les fichiers sont supprimés sur les partitions sda1 et sda2 :-)
ls: impossible d'accéder à
/mnt/Clone_disque_dur/Ubuntu_13-10/usr/local/fichier_test_1: Aucun
fichier ou dossier de ce type
ls: impossible d'accéder à 
/mnt/Clone_disque_dur/home/claude/fichier_test_2: Aucun fichier ou
dossier de ce type

mais pas sur la partition sda4 (racine) :-(
/mnt/Clone_disque_dur/usr/local/fichier_test_4

	À priori, ce n'est pas un problème de droits puisque d'une part c'est
root qui est à la manoeuvre et d'autre part les trois partitions cibles
sont montées en rw. De plus, la création du fichier fichier_test_4 sur  se fait sans souci.
Les options semblent correctes puisque les fichiers sont bien supprimées sur les partitions sdf1 et sdf2.

Pourquoi ce fichier n'est pas supprimé alors que ses deux copains sont bien supprimés eux?

Merci.

################################################ ###Script
clone_disque_dur

#/bin/bash! #Script pour cloner le disque dur du PC
REPERTOIRE_HOME="/mnt/Clone_disque_dur/home/"
REPERTOIRE_UBUNTU_13_10="/mnt/Clone_disque_dur/Ubuntu_13-10/"


# Détecter la présence des volumes de destination, éviter les erreurs
de périphériques  et interrompre l'opération si nécessaire :

#mount /dev/sda1/        /Ubuntu_13-10/ if  mount  /dev/sda1/  
/Ubuntu_13-10/ then echo  "Le DD usb est correctement monté" else echo
"Attention, le disque de sauvegarde n'est pas présent" exit fi

#mount /dev/sdf4/        /mnt/Clone_disque_dur/ if  mount 
UUID="51458b66-df35-4cbe-b633-859ece7879ae"  /mnt/Clone_disque_dur/
then echo  "Le DD usb est correctement monté" else echo "Attention, le
disque de sauvegarde n'est pas présent." exit fi

#mount /dev/sdf1/        /mnt/Clone_disque_dur/Ubuntu_13-10/ if  mount 
UUID="32966566-b017-4789-a0ef-dcf85dcfa79c"  
"$REPERTOIRE_UBUNTU_13_10"  # /mnt/Clone_disque_dur/Ubuntu_13-10/ then
echo  "Le DD usb est correctement monté" else echo "Attention, le
disque de sauvegarde n'est pas présent." exit fi #mount
/dev/sdf2/        /mnt/Clone_disque_dur/home/ if  mount 
UUID="1ce204ad-cbd8-419c-9fac-27f3dd1878db"   "$REPERTOIRE_HOME"
#/mnt/Clone_disque_dur/home/ then echo  "Le DD usb est correctement
monté" else echo "Attention, le disque de sauvegarde n'est pas présent"
exit fi

# Détecter la présence du répertoire de destination et interrompre
l'opération si nécessaire if [ ! -e "$REPERTOIRE_HOME" ] then echo
"Attention, le répertoire de sauvegarde n'est pas présent" exit else
echo "Le répertoire de sauvegarde est présent." fi

if [ ! -e "$REPERTOIRE_UBUNTU_13_10" ] then echo "Attention, le
répertoire de sauvegarde n'est pas présent" exit else echo "Le
répertoire de sauvegarde est présent." fi

nice -n 19 rsync -av --progress --del    --delete-excluded  --exclude
'media' --exclude 'proc' --exclude 'tmp' --exclude 'sys'  --exclude
'mnt' --exclude 'dev'  /  /mnt/Clone_disque_dur/

umount /dev/sda1/ umount  "$REPERTOIRE_UBUNTU_13_10" umount
"$REPERTOIRE_HOME" umount /mnt/Clone_disque_dur/

echo "Sauvegarde terminée. Vous pouvez débrancher votre disque dur."
###################################################################################

###################################################################################

deleting Ubuntu_13-10/usr/local/fichier_test_1

deleting home/claude/fichier_test_2
rsync: readlink_stat("/run/user/1000/gvfs") failed: Permission denied (13)
rsync: readlink_stat("/run/user/1001/gvfs") failed: Permission denied (13)
run/cups/certs/
run/cups/certs/0
             32 100%    0.00kB/s    0:00:00 (xfr#52, ir-chk=4389/1995438)
IO error encountered -- skipping file deletion
run/user/1000/dconf/
run/user/1000/dconf/user
              2 100%    0.01kB/s    0:00:00 (xfr#53, ir-chk=3770/1995438)
usr/local/
var/lib/AccountsService/users/
var/lib/AccountsService/users/claude
            378 100%    0.00kB/s    0:00:00 (xfr#54, ir-chk=1035/2379835)
var/log/syslog
        116,843 100%   80.18MB/s    0:00:00 (xfr#55, to-chk=289/2396601)
var/log/lightdm/lightdm.log
         15,495 100%  890.11kB/s    0:00:00 (xfr#56, to-chk=231/2396601)

sent 162,701,035 bytes  received 289,655 bytes  93,004.67 bytes/sec
total size is 753,614,167,041  speedup is 4,623.66
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.0]

###################################################################################

-- Claude Micouin <mlnglst at free.fr>








Plus d'informations sur la liste de diffusion Linux-31