TODO : réécrire cet HowTo _APRES_ la mini conf du 11 oct 2012 (on verra en combien de temps j'aurais reecris cela...)
====== Objectifs & Etat des lieux ======
* Les clefs USB ca crame facilement (notamment là ou officie madame mon épouse, il semblerait qu'une machine, soit une tueuse de clef USB, et moi même j'en ai tué d'autres)
* On oublie fréquemment de vider correctement la carte SD de l'APN familiale, et donc la veille des mariage....
* Mon [[http://www.amazon.com/Seagate-FreeAgent-DockStar-Network-STDSA10G-RK/dp/B002MRRU6G|Seagate Dockstar]] a quelque peu rendu l'âme (NAND cramée je crois bien)
* J'ai un petit [[http://www.raspberrypi.org/|RaspBerry Pi]] qui a besoin d'une fonction utile
* J'ai un joli serveur de sauvegarde (merci BackupPC)
* Les machines sont à la cave, le matériel dans la maison _doit_ être silencieux
* Sauvegarder c'est rigolo, être fainenant c'est encore mieux
====== Méthodes possibles ======
- Rallonge USB :
* simple pas de travail trop intellectuel, enfin si passer le câble, et la ca deviens vite moins souple
* certaines rallonge ne tiennent pas la longeur
- Modifier mon [[http://www.amazon.com/Seagate-FreeAgent-DockStar-Network-STDSA10G-RK/dp/B002MRRU6G|Seagate Dockstar]] pour qu'il exporte un rsync de la clef
- Utiliser simplement le paquet UsbIP (permet de faire passer de l'USB over IP) <= over kill
- Utiliser une vrai machine (le RaspBerry PI, et étudier la chose...)
===== Quid de la technicité des choix ? =====
==== NSLU2 ====
- autofs pour montage de la clef dans un rep avec le numéro de série comme point de montage
- synchro sur un disque local
- des que le serveur de synchro passe, il y a les données
- Être bien attentif a gérer l'arrachage a chaud de la clef
* Montage en RO
* Faire clignoter une Led ?
==== UsbIp ====
- Dés insertion d'un perif USB : auto-export de celui ci
- Le "ping" de Backuppc est modifier pour chercher la présence du périphérique a backuper sur le Nslu2
* Si le perif a été démonté volontairement mais pas débranché, en tenir compte
- Être bien attentif a gérer l'arrachage a chaud de la clef
* Montage en RO
* Faire clignoter une Led ?
* [[http://www.nslu2-linux.org/wiki/HowTo/UseUsbIpOnTheNSLU2|Comment faire sur NSLU2]] mais j'aime pas : cross-compil
-> Et si je faisait ca plutôt sur mon "cadavre" d'eepc (un eepc 701 acheté pas cher car clavier HS)
===== Pourquoi choisir UsbIP ? =====
- Plus le temps va passer plus il sera difficile de trouver les binaires pour piloter mes modules USB que je vais brancher dépasseront mon NSLU2 (déjà que...)
- Une Rallonge USB c'est incompatible avec la virtualisation, enfin généralement (y un hack pour Xen ;) )
- Je veux faire marcher mon pingouin magique, comme il est USB, ca serait sympa d'avoir un "standard" de l'USB a la maison !
* Pour le TuxDroid s'appuyer sur la superbe Doc http://tux.serviceinformatique06.com/
- J'aime les trucs complétement portables (oui y a le client pour windows :)))))) )
- J'aime les trucs qui sortent de l'ordinaire
- J'aime l'ouverture que ca propose (oui, je ne suis plus limité a du FileSysteme, cf le TuxDroid, mais aussi la pleine synchro du GSM, en BT !!!)
====== Ce qui fonctionne ======
A ete mis en place pour le moment :
* Un Eepc d'occasion le relais, sans clavier (donc pas cher, et potentiellement en wifi, donc mettable partout :) )
* Un serveur BackupPC (deja existant) avec des hostes au parametrage specifique
===== Manipulation faites sur le relais =====
==== Creation d'un script php ====
pour permettre au serveur **BackupPC** de:
- //pinger// la clef USB
- Lancer un dump avant le backuppc
FIXME: a terme ce dump permettras aussi, idealement bkp table de partition mbr
# Rappelons nous les 3 etats de la mati^WClef
# ? Inséré : renvoyer un errcode http
# ! Prete : permet de lancer a terme un dump du mbr, etc ...
# ! Demounte : permet de demonter le device (coté secu c'est funcky, mais bon, j'aime le risque)
# Les params seront
# Key : Label de la clef
# Ordre : dump/umount (si vide, alors c'est une demande si inséré ou pas
$label=basename($_GET["label"]);
if(file_exists("/media/".$label)) {
if($_GET["go"]=="dump") {
}
elseif($_GET["go"]=="umount") {
echo "Demande arret";
system("/usr/bin/sudo /usr/sbin/umount.hal /media/$label");
}
else {
echo "OK";
}
}
else {
header("HTTP/1.0 404 Not Found");
###header("HTTP/1.0 404 Not Found",false,404);
}
?>
==== Configuration de sudo ====
Permettre a www-data de démonter la clef en fin de backup
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
# Host alias specification
# User alias specification
# Cmnd alias specification
Cmnd_Alias UMOUC = /usr/sbin/umount.hal
# User privilege specification
root ALL=(ALL) ALL
Runas_Alias UMOUU = root
# Allow members of group sudo to execute any command after they have
# provided their password
# (Note that later entries override this, so you might need to move
# it further down)
%sudo ALL=(ALL) ALL
#
#includedir /etc/sudoers.d
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
www-data ALL =(UMOUU) NOPASSWD: UMOUC
==== Configuration de l'automount ====
- apt-get install halevt
=== Configurations d'halevt ===
dans le fichier /etc/halevt/halevt.xml, modifier le bon (hihihi) paragraphe
A ete rajouté //;/usr/local/sbin/call_bkppc true $hal.udi$ $hal.volume.mount_point$// cela lancera le script
FIXME: dans le meme paragraphe dont //Action value="false"// nous pourrons l'employer pour faire changer la led de l'arduino
Execution du script qui demande le backup (**/usr/local/sbin/call_bkppc**)
#!/bin/bash
# true /org/freedesktop/Hal/devices/volume_uuid_F03F_F5A8 /media/CLEFRBS00
mntype=$1
uidclef=$2
nomclef=`echo $3 | sed -s "s=^/media/==g" | tr "[:upper:]" "[:lower:]"`
sleep 5
wget -qO /dev/null "http://backuppc:AUTH@adlp.org/backuppc/index.cgi?host=$nomclef&hostIP=$HOSTNAME&doit=1&action=Start_Incr_Backup"
FIXME: ici il faudra changer la couleur de la Led
==== Configuration du rsync ====
- ajout d'un partage rsync
[media]
use chroot = false
read only = true
uid = root
gid = root
hosts allow = 10.0.10.51
comment = Bkp
path = /media
auth users = backuppc
secrets file = /etc/rsyncd.secrets
- Autres ameliorations
* Integrer un systeme pour backuper le MBR et la table de partition du device
* Gerer les conflits de labels ?
* Indiquer la fin du backup (euh, au hasard, un arduino? :) )
===== Serveur de Backup =====
* Je part du principe que le relais est déjà correctement backupé/able
- Intégration d'un nouvel hôte, au nom du label de la clef (ouinnnn)
- Configuration comme suis: (ici la clef, et le nom de la //machine// est ROMPAQ
#
# Local server backup of /etc as user backuppc
#
$Conf{TarShareName} = [
'/'
];
$Conf{TarClientCmd} = '$tarPath -c -v -f - -C $shareName+ --totals';
# remove extra shell escapes ($fileList+ etc.) that are
# needed for remote backups but may break local ones
$Conf{TarFullArgs} = '$fileList';
$Conf{TarIncrArgs} = '--newer=$incrDate $fileList';
$Conf{TarClientPath} = '/usr/bin/sudo /etc/backuppc/tar-create';
$Conf{RsyncShareName} = [
'media'
];
$Conf{ClientNameAlias} = 'burma';
$Conf{BackupFilesExclude} = {
'temporaires' => [],
'tmp' => [
'*/tmp/*',
'*/temp/*'
]
};
$Conf{PingCmd} = '/usr/bin/wget -qO /dev/null http://$host/media.php?label=ROMPAQ';
$Conf{BackupFilesOnly} = {
'*' => [
'/ROMPAQ'
]
};
$Conf{DumpPreUserCmd} = '/usr/bin/wget -qO /dev/null http://$hostIP/media.php?label=ROMPAQ&go=dump';
$Conf{IncrPeriod} = '0.0035';
$Conf{BlackoutPeriods} = [];
$Conf{DumpPostUserCmd} = '/usr/bin/wget -qO /dev/null http://$hostIP/media.php?label=ROMPAQ&go=umount';
===== Manipulation a faire pour l'arduino =====
* Bien retrouver sur quel port du hub est branchée la clef, faire le lien entre lsusb et ce que l'on reçoit lors du branchement de la clef
* Les états a allumer:
- Orange : clef montée, en attente de backup
- Rouge : Backup en cours
- Vert : Backup fini
- Éteint : Si tout ce passe bien, il n'y a rien dans ce port.
FIXME
* Mieux gérer le nom de la "machine", c'est peu lisible
* Mieux gérer le nom fictif de la machine pour la passer aux scripts => minimiser les paramétrages
* Pb de casse pour automatiser sur le nom de la partitions
* Pas regarde pour le multipartitionning
* Mieux gérer les auth
- Créer un compte sur le backuppc juste pour la demande de backup des clefs
- Gérer un login/mdp //uniquement// pour la demande de dump et cette de démontage
- Sélectionner les clefs qui ont droit ou non a ce bakup