Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Script de sauvegarde avec rsync

74 réponses
Avatar
sebastienmarty
Bonjour tous,

Je souhaiterais que ma sauvegarde se déroule comme suit:

1 - Montage du volume de backup externe
2 - Sauvegarde
3 - Démontage du volume de backup externe

Je pensais pouvoir le faire avec Carbon Copy Cloner, en lui indiquant un
"preflight script", mais il se trouve qu'il vérifie /avant/ si le volume
de destination est disponible. Donc ça ne marche pas.

Du coup je m'oriente vers la ligne de commande, et à force de chercher
un peu partout, j'ai pondu un script de ce genre :

disktool -l | egrep -i "Mountpoint = '', fsType = 'hfs', volName =
'.*BACKUP" | cut -d\' -f2 | xargs -n1 disktool -m
sleep 10
sudo rsync -xrlptgoEv --progress --delete / /Volumes/BACKUP
disktool -l | egrep -i "Mountpoint = '/Volumes/.*BACKUP" | cut -d\' -f2
| xargs -n1 disktool -p


Mes questions:
a/ est-ce qu'on peut faire mieux ou plus simple (les lignes disktool
notamment restent assez absconces pour moi) ?
b/ est-ce qu'il est possible de faire en sorte que rsync ne nécessite
pas sudo, afin de rendre tout ça complètement automatique et transparent
?
c/ quelle est ensuite la meilleure méthode, sous Mac OS X 10.5, pour
programmer le lancement à intervalle régulier ? Cron ?

Merci pour vos lumières !
--
[SbM]
<http://sebastienmarty.free.fr> - <http://tradintosh.free.fr>
<http://sbm.ordinotheque.free.fr> - <http://palmiciel.free.fr>
"If the French were really intelligent, they'd speak English" (W. Sheed)

10 réponses

1 2 3 4 5
Avatar
laurent.pertois
OdarR wrote:

diskutil list | grep BACKUP | awk '{print $6}' | xargs -n1 diskutil
unmount



Soyons fous :

diskutil unmount `diskutil list | grep BACKUP | awk '{print $6}'`

;-)

Sinon, méfiance avec les espaces quand même...

Sinon, pour éviter des soucis, le mieux est de repérer l'UUID du disque
dans les infos, ainsi, on peut l'utiliser directement avec diskutil,
genre "diskutil unmount UUID". L'autre avantage, si le disque est
renommé, pour quelque raison que ce soit, l'UUID ne change pas. Par
contre, si on le réinitialise, il va changer. Mais personnellement, je
trouve l'utilisation de l'UUID plus sûre que le nom, de plus, on
s'épargne les soucis d'espaces et autres.

A noter, l'UUID s'obtient également dans les infos d'Utilitaire de
Disques.

--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.
Avatar
OdarR
On 18 avr, 00:56, (Laurent Pertois)
wrote:
A noter, l'UUID s'obtient également dans les infos d'Utilitaire de
Disques.


effectivement, c'est encore mieux.
vu et utilisé sur linux. Ici j'aurais dû y penser. :)

Olivier
Avatar
OdarR
On 18 avr, 00:19, (SbM) wrote:
Merci beaucoup à tous pour votre aide, en tout cas : j'avance bien, et
j'apprends en même temps, c'est génial ;)



nous aussi :-)

Quelques remarques:
- dans ton bash script, tu tentes un mount en ne sachant pas si le
disque est là (je testais d'abord si le disque est branché...)
- essaie d'utiliser le UUID du disque pour l'identifier, finalement
c'est le plus sûr (cfr Laurent)
- je n'avais pas compris que tu voulais tout sauver, donc
effectivement, suis les conseils pour que ton user ait tous les droits
sur rsync.
- cron ou launchd, c'est toi qui voit. J'avais lu ici même quelques
remarques de prudence avec Lingon, donc je n'ai pas creusé plus loin
que quelques essais. Ce serait bien que Apple nous ponde un outil
garanti pour valider ces xml. Sinon cron est nettement plus simple
pour démarrer.

a+
Olivier
Avatar
OdarR
On 17 avr, 23:16, (SbM) wrote:
Et ce serait capable par exemple de cloner intégralement mon disque
système, même si je le lance sans sudo ? Dans ce cas je me torture le s
méninges pour rien ;)



non, vu les besoins (mon € est tombé), utilise les conseils évoqués
plus haut. Pour tout un disque, il faut être SuperUser !

Je me le traduit : on demande à diskutil d'afficher la liste des disque s
et partitions, on récupère la ligne correspondant à la partition
"BACKUP", on extrait la 6e colonne (qui contient le nom sous forme
/dev/diskXsY), et on la passe comme argument à "diskutil mount".



voilà.

> essaie donc juste cette ligne...histoire de confirmer que la 6e
> colonne est aussi chez toi bien le nom du disque que tu cherches.

Chez moi c'est la 7e, mais ça fonctionne parfaitement, merci!



tiens bizarre... :-S

Ça marche aussi (en choisissant la 7e colonne au lieu de la 6e), sauf
qu'il faut mettre "eject" au lieu de "unmount" pour que le disque
s'arrête de tourner.



ah ok. Testé uniquement sur un 2"1/2...qui s'est éteint tout seul.

Wow. Je connais encore moins le python que le bash, mais si ça
fonctionne, après tout ;)



l'essayer c'est l'adopter. crois-moi :)

Olivier
Avatar
sebastienmarty
OdarR wrote:

On 18 avr, 00:19, (SbM) wrote:
> Merci beaucoup à tous pour votre aide, en tout cas : j'avance bien, et
> j'apprends en même temps, c'est génial ;)

nous aussi :-)

Quelques remarques:
- dans ton bash script, tu tentes un mount en ne sachant pas si le
disque est là (je testais d'abord si le disque est branché...)



En effet, tu as raison. Je vais modifier.

- essaie d'utiliser le UUID du disque pour l'identifier, finalement
c'est le plus sûr (cfr Laurent)



Idem, modification prévue.

- je n'avais pas compris que tu voulais tout sauver, donc
effectivement, suis les conseils pour que ton user ait tous les droits
sur rsync.



Je ne l'avais pas explicitement indiqué, aussi ;)

- cron ou launchd, c'est toi qui voit. J'avais lu ici même quelques
remarques de prudence avec Lingon, donc je n'ai pas creusé plus loin
que quelques essais. Ce serait bien que Apple nous ponde un outil
garanti pour valider ces xml. Sinon cron est nettement plus simple
pour démarrer.



Je jetterai un oeil à lingon, et si vraiment ça reste hermétique pour
moi je me rabattrai sur cron.

Merci bien !
--
[SbM]
<http://sebastienmarty.free.fr> - <http://tradintosh.free.fr>
<http://sbm.ordinotheque.free.fr> - <http://palmiciel.free.fr>
"If the French were really intelligent, they'd speak English" (W. Sheed)
Avatar
OdarR
On 18 avr, 00:56, (Laurent Pertois)
wrote:
A noter, l'UUIDs'obtient également dans les infos d'Utilitaire de
Disques.



quel champ d'information est le UUID dans les infos d'Utilitaire de
Disques stp ?
-> "identifiant unique universel".

je cherchais cette info sur une partoche FAT32, et le UUID n'existe
pas..

Olivier
Avatar
laurent.pertois
OdarR wrote:

On 18 avr, 00:56, (Laurent Pertois)
wrote:
> A noter, l'UUIDs'obtient également dans les infos d'Utilitaire de
> Disques.

quel champ d'information est le UUID dans les infos d'Utilitaire de
Disques stp ?
-> "identifiant unique universel".



Je suppose, je suis en anglais et c'est "Universal Unique Identifier"

Exemple :

5CB172D8-2D88-374D-96FF-533C2FD0241A


je cherchais cette info sur une partoche FAT32, et le UUID n'existe
pas..



Effectivement, je n'en vois pas.

--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.
Avatar
jacques
SbM wrote:

Merci pour vos lumières !



<http://www.foucry.net/blog/?p8>

De rien, ça me fait plaisir !

Jacques
--
Visitez le blog de l'admin :<http://www.foucry.net/blog>
Avatar
sebastienmarty
Jacques Foucry wrote:

SbM wrote:

> Merci pour vos lumières !

<http://www.foucry.net/blog/?p8>

De rien, ça me fait plaisir !



Pas sûr d'avoir tout compris, mais je relirai à tête reposée. Merci en
tout cas ;)
--
[SbM]
<http://sebastienmarty.free.fr> - <http://tradintosh.free.fr>
<http://sbm.ordinotheque.free.fr> - <http://palmiciel.free.fr>
"If the French were really intelligent, they'd speak English" (W. Sheed)
Avatar
Nicolas-Michel_REMOVE
SbM wrote:

Jacques Foucry wrote:

> SbM wrote:
>
> > Merci pour vos lumières !
>
> <http://www.foucry.net/blog/?p8>
>
> De rien, ça me fait plaisir !

Pas sûr d'avoir tout compris, mais je relirai à tête reposée. Merci en
tout cas ;)



Hello

3 questions :

- pourquoi utiliser sudo plutôt que root ?
(pas besoins de l'activer, il suffit de soit faire une crontab root soit
faire un launchd au niveau système)

- pourquoi écrire un script plutôt que d'utiliser synchronize! qui gère
le mount et le unmount ?

- si synchronize! ne convient pas, pourquoi ne pas utiliser CCC en
modifiant le lancement pour qu'il fasse le mount avant ?
(CCC a l'avantage de gérer les exclusions, le bless et autre)

--
Nicolas Michel
1 2 3 4 5