[bash] La commande 'cd' verrouille le dossier cible
Bonjour,
Quand je fais rsync -options chemin_src chemin_dst, tout va bien sauf qu'à la fin je me retrouve avec le dossier chemin_src (et son contenu) dans chemin_dst, or j'aurais préféré avoir le contenu de chemin_src dans chemin_dst (ce qui générerait deux dossiers strictement identiques mis à part le nom racine).
La combine que j'ai trouvée pour m'en sortir se résume à ça :
Code:
1 2 3 4
| olddir=$(pwd)
cd chemin_src
rsync -options . chemin_dst
cd $olddir |
C'est pas mal, ça fonctionne, sauf que je ne vous ai pas tout dit : chemin_src et chemin_dst sont en fait des points de montage pour des fichiers de disques virtuels, montés avec force vérifications et contrôles par vdfuse et mount -o loop, et démontés avec umount après le backup.
Et donc,
- si j'utilise rsync -options chemin_src chemin_dst ça fonctionne tip-top (mis à part src dans dst comme expliqué ci-dessus) ;
- si j'utilise les 4 lignes de la combine le démontage échoue en erreur comme quoi chemin_src est en cours d'utilisation.
fuser chemin_src me dit1 que c'est mon script qui le tient, alors j'ai déporté les 4 lignes de la combine dans un second_script.sh, et là c'est lui qui est remonté par fuser alors qu'il est bien terminé.
Qu'est-ce qui cloche avec cd chemin pour que "chemin" soit encore tenu après que cd autre_chemin, appelé ensuite, ait bien fonctionné ?
---
1 : quand il le dit (un seul script), car ce n'est pas toujours le cas (utilisation du second script) :
Code:
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 27
| # le drame c'est que des fois fuser ne voit rien quand mount voit :
## mount
#/data/nobackup/fic_source.vdi on /mnt/vhd-vdi/mountpointsrc type fuse.vdfuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other)
#/mnt/vhd-vdi/mountpointsrc/Partition1 on /mnt/vdisksrc/Partition1 type ext4 (rw,relatime,data=ordered)
#2 lignes :
#- celle du haut
## fuser /mnt/vhd-vdi/mountpointsrc --> rien
## fuser /data/nobackup/fic_source.vdi --> /data/nobackup/fic_source.vdi: 7332
#- celle du bas
## fuser /mnt/vdisksrc/Partition1 --> rien mais le umount ne peut pas la démonter
## fuser /mnt/vhd-vdi/mountpointsrc/Partition1 --> rien
# quant au kill de fuser... euh...
## fuser -k /data/nobackup/fic_source.vdi
#/data/nobackup/fic_source.vdi: 7332
## fuser /data/nobackup/fic_source.vdi --> sans le -k = ligne vide donc c'est fait...
## mount ... à moitié : les 2 lignes sont toujours là, celle du bas a un peu changé
#/data/nobackup/fic_source.vdi on /mnt/vhd-vdi/mountpointsrc type fuse.vdfuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other)
#/dev/loop0 on /mnt/vdisksrc/Partition1 type ext4 (rw,relatime,data=ordered)
# et le kill l'a mise en vrac :
## ls -Al
#ls: impossible d'accéder à mountpointsrc: Noeud final de transport n'est pas connecté
#drwxr-xr-x 2 root root 4096 oct. 14 11:00 mountpointdst
#d????????? ? ? ? ? ? mountpointsrc |