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 04/12/2009, à 23:02

Rizzen Virnn

rsync exclure une partition

Bonjour,

je suis en train de me faire mon script rsync mais je bloque sur un point.
J'ai une partition de 15gb dans laquelle j'ai mon système et ma home et j'ai une deuxième partition de 150gb avec mes données personnelles (que je partage avec d'autres distribution).
J'essaye au maximum de garder tout ce qui est propre à la distribution (fichier de configuration,...) sur la partition de la distribution et tout ce qui est donnée perso sur l'autre.
Pour faciliter l'utilisation j'ai fait plein de liens dans ma home vers les différents répertoire de la partition de partage (musique, images, cours,...)

Je veux dissocier la sauvegarde de la partition système+home de celle de donnée.

J'ai trouvé deux solutions qui ne sont pas parfaites :

1. démonter la partition de donnée et faire la sauvegarde
  --- problème : je ne peux pas accéder à mes données pendant la sauvegarde et avec l'idée de coupler le script à une tâche cron journalière c'est vraiment pas pratique

2. exclure manuellement tout les dossiers qui sont des liens vers la partition de donnée
  --- problème : il y en a quand même quelques un et pour peu que je n'ai pas donné le même nom aux dossiers ou le même point de montage, je dois modifier le script si je veux l'utiliser sur d'autres distributions

est-ce qu'il n'y aurait pas moyen de détecter automatiquement qu'il ne s'agit pas de la même partition ?
au pire faire ça (détecter les liens qui vont vers /media/share/quelquechose) avant la commande rsync en bash puisque c'est un script bash

merci

Dernière modification par Rizzen Virnn (Le 04/12/2009, à 23:08)


Ubuntu 12.04 32bit - Archlinux 64 bit
HP Pavilion dv6790eb
Blog

Hors ligne

#2 Le 04/12/2009, à 23:23

Michel Leunen

Re : rsync exclure une partition

Regarde dans la page de manuel de rsync, il y a des options permettant de lui dire de ne pas suivre les liens et donc de ne pas sauvegarder ce qu'il y a sur ton autre partition.


Michel Leunen
http://linux.leunen.com

Hors ligne

#3 Le 04/12/2009, à 23:28

Rizzen Virnn

Re : rsync exclure une partition

mais je veux suivre les liens (c'est nécessaire pour un backup complet non ?), juste pas ceux qui sont sur une autre partition

edit :
sans doute un de ceux là
l'option --safe-link ferait ça ?
Ca dépent ce qu'ils appellent l'arbre

        -l, --links                 copy symlinks as symlinks
        -L, --copy-links            transform symlink into referent file/dir
            --copy-unsafe-links     only "unsafe" symlinks are transformed
            --safe-links            ignore symlinks that point outside the tree
        -k, --copy-dirlinks         transform symlink to dir into referent dir
        -K, --keep-dirlinks         treat symlinked dir on receiver as dir
        -H, --hard-links            preserve hard links

Dernière modification par Rizzen Virnn (Le 04/12/2009, à 23:33)


Ubuntu 12.04 32bit - Archlinux 64 bit
HP Pavilion dv6790eb
Blog

Hors ligne

#4 Le 04/12/2009, à 23:37

Michel Leunen

Re : rsync exclure une partition

Rizzen Virnn a écrit :

2. exclure manuellement tout les dossiers qui sont des liens vers la partition de donnée

Si c'est pas exclure les liens, je ne comprends pas ce que tu veux faire.
En général, si on a deux partitions à backuper, on backup chaque partition séparément. Ca facilite le travail. Mais dans chaque partition, il ne faut pas qu'on suive les leins qui pointe vers l'autre partition.
--safe-links semble bien correspondre à cela et je rajouterais l'option --links aussi pour que les liens soient bien backuper.


Michel Leunen
http://linux.leunen.com

Hors ligne

#5 Le 05/12/2009, à 00:04

Rizzen Virnn

Re : rsync exclure une partition

oui ça a l'air de bien fonctionner merci smile
(je teste complètement avant de mettre en résolu)

ma commande semble correcte comme ça ? :

sudo rsync -va --progress --numeric-ids --delete --links --safe-links --force --exclude=/tmp --exclude=/media --exclude=/mnt --exclude=/chroot --filter "- .thumbnails/" --filter "- .Trash/" --filter "- *.tmp" --filter "- lost+found/" --filter "- .cache/" --filter "- tmp" / /media/backup/syteme

en mettant des exclude pour /media, il sera bien exclu de l'arbre et donc les liens ?

edit : en fait il ne me laisse meme pas un lien sans aller dedans comme j'aurais voulu, il fait juste que les passer
il faut rajouter l'option --copy-links pour ça ?

Dernière modification par Rizzen Virnn (Le 05/12/2009, à 00:31)


Ubuntu 12.04 32bit - Archlinux 64 bit
HP Pavilion dv6790eb
Blog

Hors ligne

#6 Le 05/12/2009, à 16:58

Michel Leunen

Re : rsync exclure une partition

Rizzen Virnn a écrit :
sudo rsync -va --progress --numeric-ids --delete --links --safe-links --force --exclude=/tmp --exclude=/media --exclude=/mnt --exclude=/chroot --filter "- .thumbnails/" --filter "- .Trash/" --filter "- *.tmp" --filter "- lost+found/" --filter "- .cache/" --filter "- tmp" / /media/backup/syteme

en mettant des exclude pour /media, il sera bien exclu de l'arbre et donc les liens ?

Oui, absolument. Ce qu eje fais moi, c'est mettre les répertoires que j'exclus dans un fichier at j'utilise l'option --exclude-from="mon_fichier_exclude". De cette façon, je peux mettre à jour facilement cette liste sans devir toucher au script.

Rizzen Virnn a écrit :

edit : en fait il ne me laisse meme pas un lien sans aller dedans comme j'aurais voulu, il fait juste que les passer
il faut rajouter l'option --copy-links pour ça ?

Je suppose mais je n'ai pas essayer. Fais un test rapide et tu seras renseigné. smile


Michel Leunen
http://linux.leunen.com

Hors ligne

#7 Le 07/12/2009, à 12:37

Rizzen Virnn

Re : rsync exclure une partition

Michel Leunen a écrit :

Oui, absolument. Ce qu eje fais moi, c'est mettre les répertoires que j'exclus dans un fichier at j'utilise l'option --exclude-from="mon_fichier_exclude". De cette façon, je peux mettre à jour facilement cette liste sans devir toucher au script.

oui pas mal comme astuce
et pour les filtres il y a un équivalent ?

Michel Leunen a écrit :

Je suppose mais je n'ai pas essayer. Fais un test rapide et tu seras renseigné. smile

j'ai ma réponse : non
en rajoutant ça il descend dans les dossiers et recopie tout mon système une fois du plus avec des liens comme pour wine qui remontent...
avec --links --safe-links, il me passe les dossiers à l'extérieur ou vers la racine (alors que j'aurais voulu avoir un lien) mais copie bien les liens à l'intérieur

en cherchant je suis tombé sur ce script qui utilise une autre méthode : des --link-dest plutot que --backup
qu'est ce qui est le plus adapté ?

Dernière modification par Rizzen Virnn (Le 07/12/2009, à 12:49)


Ubuntu 12.04 32bit - Archlinux 64 bit
HP Pavilion dv6790eb
Blog

Hors ligne

#8 Le 07/12/2009, à 17:32

Michel Leunen

Re : rsync exclure une partition

Rizzen Virnn a écrit :

en cherchant je suis tombé sur ce script qui utilise une autre méthode : des --link-dest plutot que --backup
qu'est ce qui est le plus adapté ?

C'est la méthode utilisée quand on veut garder plusieurs copies des backups. Lorsque, par exemple, tu fais un backup journalier et qu'en plus, tu veux garder un backup de plusieurs jours. --link-dest permet de ne pas recopier dans le backup les fichiers qui auraient déjà été copiés un jour précédent. Il crée juste un lien hard vers le fichier. Avec --backup, tu ne testes pas l'existence du fichier dans un précédent backup.
A toi de voir ce qui est le plus adapté dans ton cas, en fonction de ce que tu veux faire.


Michel Leunen
http://linux.leunen.com

Hors ligne

#9 Le 07/12/2009, à 19:06

Rizzen Virnn

Re : rsync exclure une partition

Donc si je comprend bien, avec --link-dest, je me retrouve avec des images complètes de comment étais le système à ce moment et avec --backup j'ai une image complète du système lors du dernier backup et dans les anciens justes les fichiers qui ont été modifiés/supprimés et qui sont différents que dans la dernière version
donc je dirais plus réaliste avec --link-dest mais plus dur de mettre en évidence les changements

par contre, deux backup fait avec peu de changements entre les deux, le script trouvé sur l'autre site prend plus de place (sans doute à cause de tout les liens)

je ne comprend pas ce que tu dis par "tu ne testes pas l'existence du fichier dans un précédent backup".
Si par exemple je fais :
backup n°1
télécharger image.jpg
backup n°2
supprimer image.jpg
backup n°3
retélécharger image.jpg
backup n°4

est-ce que ça veut dire qu'avec la solution --link-dest image.jpg ne sera enregistré qu'une fois et avec --backup il l'enregistrera 2 fois à cause du backup n°3
et est-ce qu'il y a des liens entre backup 1-3 et 2-4 ? comme il n'y a pas de changements en principe...
edit : j'ai fait un petit test avec 4 fichiers et 3 backup avec ou sans un même fichier.
Résultat : dans les 2 solutions je me retrouve avec un dossier du 9.5Mb
je n'ai pas remarqué d'autres différences que mentionné plus haut. A chaque fois que je fais tourner le script avec --link, il me crée un nouveau dossier, avec --backup uniquement si je supprime un fichier (pas si je rajoute parce qu'il le met uniquement dans la copie complète)

Dernière modification par Rizzen Virnn (Le 07/12/2009, à 19:27)


Ubuntu 12.04 32bit - Archlinux 64 bit
HP Pavilion dv6790eb
Blog

Hors ligne

#10 Le 07/12/2009, à 22:34

Michel Leunen

Re : rsync exclure une partition

Rizzen Virnn a écrit :

Donc si je comprend bien, avec --link-dest, je me retrouve avec des images complètes de comment étais le système à ce moment et avec --backup j'ai une image complète du système lors du dernier backup et dans les anciens justes les fichiers qui ont été modifiés/supprimés et qui sont différents que dans la dernière version
donc je dirais plus réaliste avec --link-dest mais plus dur de mettre en évidence les changements

par contre, deux backup fait avec peu de changements entre les deux, le script trouvé sur l'autre site prend plus de place (sans doute à cause de tout les liens)

je ne comprend pas ce que tu dis par "tu ne testes pas l'existence du fichier dans un précédent backup".
Si par exemple je fais :
backup n°1
télécharger image.jpg
backup n°2
supprimer image.jpg
backup n°3
retélécharger image.jpg
backup n°4

est-ce que ça veut dire qu'avec la solution --link-dest image.jpg ne sera enregistré qu'une fois et avec --backup il l'enregistrera 2 fois à cause du backup n°3

rsync est un programme écrit pour faire des backups incrémentiels. Il a toutes les facilités nécessaires pour cela. Mais c'est tout. Le boulot c'est à toi de le faire. --link-dest=DIR est l'option complète. Quand tu lui mais ce genre d'option, rsync regarde dans DIR si le fichier existe déjà. Si c'est oui, il crée un hard link vers ce fichier plutôt que de le copier. DIR c'est par exemple le répertoire du backup précédent. Mais c'est ce que tu veux que ce soit. C'est à toi de dire quel répertoire est DIR.


Michel Leunen
http://linux.leunen.com

Hors ligne