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 Seagate Dockstar a quelque peu rendu l'âme (NAND cramée je crois bien)
  • J'ai un petit 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

  1. 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
  2. Modifier mon Seagate Dockstar pour qu'il exporte un rsync de la clef
  3. Utiliser simplement le paquet UsbIP (permet de faire passer de l'USB over IP) ⇐ over kill
  4. Utiliser une vrai machine (le RaspBerry PI, et étudier la chose…)

Quid de la technicité des choix ?

NSLU2

  1. autofs pour montage de la clef dans un rep avec le numéro de série comme point de montage
  2. synchro sur un disque local
  3. des que le serveur de synchro passe, il y a les données
  4. Être bien attentif a gérer l'arrachage a chaud de la clef
    • Montage en RO
    • Faire clignoter une Led ?

UsbIp

  1. Dés insertion d'un perif USB : auto-export de celui ci
  2. 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
  3. Être bien attentif a gérer l'arrachage a chaud de la clef
    • Montage en RO
    • Faire clignoter une Led ?

→ Et si je faisait ca plutôt sur mon “cadavre” d'eepc (un eepc 701 acheté pas cher car clavier HS)

Pourquoi choisir UsbIP ?

  1. 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…)
  2. Une Rallonge USB c'est incompatible avec la virtualisation, enfin généralement (y un hack pour Xen ;) )
  3. Je veux faire marcher mon pingouin magique, comme il est USB, ca serait sympa d'avoir un “standard” de l'USB a la maison !
  4. J'aime les trucs complétement portables (oui y a le client pour windows :)))))) )
  5. J'aime les trucs qui sortent de l'ordinaire
  6. 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:

  1. pinger la clef USB
  2. 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

  1. apt-get install halevt

Configurations d'halevt

dans le fichier /etc/halevt/halevt.xml, modifier le bon (hihihi) paragraphe

<halevt:Device match="hal.block.device &amp; hal.block.is_volume = true &amp; hal.volume.mount_point">
   <halevt:Property name="hal.volume.is_mounted">
      <halevt:Action value="true" exec="halevt-mount -s;/usr/local/sbin/call_bkppc true $hal.udi$ $hal.volume.mount_point$"/>
   </halevt:Property>
</halevt:Device>
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

  1. 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

  1. 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
  1. Intégration d'un nouvel hôte, au nom du label de la clef (ouinnnn)
  2. 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:
    1. Orange : clef montée, en attente de backup
    2. Rouge : Backup en cours
    3. Vert : Backup fini
    4. É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
    1. Créer un compte sur le backuppc juste pour la demande de backup des clefs
    2. Gérer un login/mdp uniquement pour la demande de dump et cette de démontage
    3. Sélectionner les clefs qui ont droit ou non a ce bakup
docs/hard_hack/synclef_old.txt · Dernière modification: 2012/10/21 22:48 (édition externe)
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki