Newsgroup: it.comp.os.linux.sys
Titolo: Dump tabella partizioni

Ho la necessità di fare il dump dei vari MBR presenti
su ciascun disco connesso alla macchina.
Da bacula.
Ci sono almeno 2-3 modi per farlo, alcuni puliti, altri
meno:
for i in $(cat /proc/partitions | egrep "[hsx][v]?d[a-z]$" | awk '{print 
$4}'); do
   dd if=/dev/$i of=/tmp/$i.mbr bs=512 count=1;
done
oppure più semplicemente:
for disco in /dev/[sh]d?; do
   dd if=$disco of=/tmp/$(basename $disco).mbr bs=512 count=1;
done
o anche:
fdisk -l /dev/[sh]d?
che mi mostra la configurazione delle partizioni.
Problema: da bacula divento matto a fare l'escape dei caratteri.
Potrei usare un normalissimo sfdisk -d, ma non sono sicuro che
esso sia presente su ogni sistema Linux anche installato in
versione minimale (fdisk, invece, lo è)
Domanda:
esiste un comando per fare il dump della tabella delle partizioni,
per ciascun disco presente sul computer, in maniera automatica e
con il minor numero di escape da fare inserendo la stringa du Bacula?
Ad esempio scrivendo questo:
Client Run Before Job = "sh -c \"for disco in /dev/[sh]d?; do dd 
if=@\${disco} of=/tmp/base-\$(basename @\${disco}).mbr bs=512 count=1; 
done\""
mi vien fuori questo errore:
ClientRunBeforeJob: dd: opening `@/dev/[sh]d?': No such file or directory
che non so come risolvere, non riuscendo a fare l'escape correttamente.
Consigli? Il dump di fdisk sarebbe perfetto, ma non mi pare possa
essere reimportato in automatico come si farebbe con sfdisk o dd.
-- 
Non tocca a noi dominare tutte le maree del mondo,
il nostro compito è di fare il possibile per la
salvezza degli anni nei quali viviamo,
sradicando il male dai campi che conosciamo.

 minor numero di escape da fare inserendo la stringa du Bacula?
Sfdisk
Enrico

 Sfdisk
Di la verità, non hai letto per intero il mio post. :)

 essere reimportato in automatico come si farebbe con sfdisk o dd.
Generalmente è più probabile trovare sfdisk che fdisk.
Il problema rispetto a dd è che non copia il codice di boot (e per essere
precisi dovresti copiare 32KiB di dati, non solo 512B).
-- 
Flavio Visentin
Ubuntu in Zulu significa "Non so usare Debian". (cit. CtRiX)

 precisi dovresti copiare 32KiB di dati, non solo 512B).
dd sarebbe LA soluzione, ma ho problemi con l'escape, se qualcuno
fosse in grado di aiutarmi...
Con i primi 512B prendo solo la lista delle partizioni e l'MBR, quindi
facendo il restore dovrei ritrovarmi un sistema in grado di fare il boot
con grub pre installato (o lilo, a seconda di chi c'era prima).
Gli altri 32K cosa contengono?

 in grado di aiutarmi...
E che te ne fotte del DD:
scp script.sh root@$SER$VER:/tmp
slogin -l root $SERVER /tmp/script.sh backup
scp root@$SERVER:/tmp/mbr* lisalvoqui/
slogin -l root $SERVER /tmp/script.sh cleanup

 E che te ne fotte del DD:
s/\sDD/l'escaping/

 slogin -l root $SERVER /tmp/script.sh cleanup
Devo avere accesso ssh (o altro) alla macchina
di destinazione, da parte del server di backup,
cosa che non ho assolutamente.


 del server di backup, cosa che non ho assolutamente.
Ok.
Premesso che bacula non lo uso,
Client Run Before Job = "/bin/bash $PATH_TO_SCRIPT"
e lo script, ovviamente, non serve escaparlo ??
Logicamente devi mettere lo script su ogni server, almeno quello.

 Logicamente devi mettere lo script su ogni server, almeno quello.
E' quello che voglio evitare di fare.
Volevo automatizzare il dump tramite DD per evitare di
dover copiare lo stesso script su vagonate di server.
Ecco perchè cerco la soluzione con dd o un software per
il dump di partizione installato su tutti i server.
Un conto è installare uno script su 1 server, un conto è
installarlo su 100


 Di la verità, non hai letto per intero il mio post. :)
No, altrimenti ti avrei risposto che sfdisk, alla pari di fdisk e cfdisk, 
lo trovi su ogni sistema linux (e.g. su debian lo trovi nel pacchetto 
util-linux, mentre in centos lo trovi in util-linux-ng) :)
Enrico

 Gli altri 32K cosa contengono?
Il codice di boot che inizia nel MBR può essere lungo fino a 32K, quindi
potrebbe capitare che copiando i primi 512 bytes si copino le partizioni ma
non si ottenga un sistema funzionante.


 util-linux, mentre in centos lo trovi in util-linux-ng) :)
su slackware, per dire, non c'è.

 non si ottenga un sistema funzionante.
ok, ma te indenti il codice installato come bootloader?
il mio progetto era ripristinare la tabella poi reinstallare
a mano il bootlooder una volta ripristinati i file dal backup.
se però si potesse automatizzare il passaggio ripristinando direttamente
grub/lilo tramite dd, sarebbe ancora meglio.

 su slackware, per dire, non c'è.
Ma io Slackware non la userei nemmeno per studio, eh :P
Enrico

 Ma io Slackware non la userei nemmeno per studio, eh :P
eheheh, nemmeno io, ma anni fa la usavo ed ho ancora
alcuni server con lei.
Comunque sia, credo di seguire il consiglio di CtRiX ovvero
eseguire uno script direttamente sul client, perchè oltre
alla tabella delle partizioni devo fare il dump anche della
configurazione LVM, se presente e la faccenda si complica
se volessi eseguire il tutto mono-riga da bacula.
Devo quindi trovare wget o simili presente di default su
tutti i sistemi. In debian wget è taggato come standard
quindi in installazioni minimali potrebbe non essere presenti.
Come posso scaricare un file via rete?
Pensavo di fare così:
wget 
http://interno/script.sh
 -O - | sh
messo tutto in ClientRunBeforeJob, ma il wget non è sempre presente.

 messo tutto in ClientRunBeforeJob, ma il wget non č sempre presente.
Premessa: non conosco bacula.
Esiste un 'RunBeforeJob'? Se la risposta č si, usa scp per copiare
lo script sul client e poi con ClientBlaBla lo esegui.
-- 
ValeRyo
XT600 "Katoki Pajama" - 
http://www.slimmit.com/go.asp?7Y9
GamerTag: 
http://card.mygamercard.net/IT/nxe/ValeRyo76.png
 

 lo script sul client e poi con ClientBlaBla lo esegui.
Si, esiste, ma non posso usare scp per copiare il file perchè
dovrei installare il certificato su ogni client per evitare
la richiesta di password, cosa che non posso e non voglio fare.
Voglio evitare che il backup possa acceder via shell, anche se
in maniera ridotta, ai client. In caso di problemi, mi bucano
il backup ed entrano anche nei client.
Preferisco, quindi, trovare il modo di trasferire uno script
che sta sul server direttamente dal client, ad esempio con
wget.
Ho appena notato che wget su debian è classificato come "important"
quindi dovrebbe essere sempre presente (ed infatti il mio server
di backup, installato come al solito da una netinstall minimale
deselezionando anche il sistema base in fase di installazione" contiene
wget. Ubuntu, però, lo marca come Standard, presumo quindi possa non
essere sempre presente (c'è però da dire che su Ubuntu in fase di
installazione i pacchetti non vengono fatti scegliere)

su slackware, per dire, non c'č.
sfdisk lo trovi dalla >= 12.1 in util-linux-ng
Corrado Roberto
Fingerprint: 8FC8 05DE 2B53 A8AF 8B2B 6CBF AD23 C4D5 86FE 80BB

 Ma io Slackware non la userei nemmeno per studio, eh :P
Non ci sono più i sysadmin di una volta :-)
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   < 
http://giovanni.homelinux.net/
 >

 Ma io Slackware non la userei nemmeno per studio, eh :P
degustibus, io non ne potrei fare a meno.
Slackware č un po' come  lo slogan di pgp => "se non lo trovi in Slack, 
probabilmente puoi anche farne a meno".


 Non ci sono più i sysadmin di una volta :-)
Ciao Giovanni,
il tuo replay mi conforta, poiché grazie ad esso sò di non essere il solo ad 
aver avuto quella sensazione.


 aver avuto quella sensazione.
Non è che non ci sono più i sysadmin di una volta.
Io ho iniziato con Slackware, mi è sempre piaciuta, ma
poi quando ho iniziato ad avere un cospicuo numero di
macchine da gestire, ho visto che non riuscivo semplicemente
a star dietro a fare update, ricompilare, installare,
gestire etc etc rispetto a quanto faccio ora con debian.
Il problema è che con debian (o centos) fai in 10 minuti
quello che faresti in una giornata con slackware.

 probabilmente puoi anche farne a meno".
Pensavo a pam...


 Pensavo a pam...
Pensi bene, ma nulla che un SysAdmin non possa implementare (almeno in 
teoria).


 quello che faresti in una giornata con slackware.
hai corretto il tiro :-) cosě non vale!
ciao!


ClientRunBeforeJob: dd: opening `@/dev/[sh]d?': No such file or directory
Vuol dire che non ha neppure fatto l'espansione "/dev/[sh]d?" :-|
Peraltro, il mio muletto SuSE qui usa /dev/cciss, non /dev/hda (che credo
sia il CD-ROM; non ho mai guardato), quindi non mi limiterei a [sh]d?.
Comunque: potresti scriverti uno script codificatore, che trasformi tutti
i caratteri pericolosi e gli spazi in "\xNN" esadecimale, e provare se ti
funziona
	"echo -ne for\x20disco\x20in\x20... | sh"
Io ho provato adesso e:
	"echo -ne Zm9yIGkgaW4gL2Rldi9bc2hdZD87IGRvIGVjaG8gJGk7IGRvbmUK |
base64 -d | sh"
funziona: ovviamente cosě richiede base64, ma si puo' fare senza.
Leonardo sottocuoco
-- 
Enough, enough!  But, stranger, ere we part,
Glancing farewell to each nefarious bier,
This warning would I beg you take to heart:
There is an end to e'en the worst career!

 hai corretto il tiro :-) cos non vale!
Perchè avrei corretto il tiro?
Non mi pare di aver detto cose differenti.

 funziona
naaaaaaaaaa
allora vado di wget.
wget 
http://ipserverbackup/mioscript.sh
 -O - | sh

wget 
http://ipserverbackup/mioscript.sh
 -O - | sh
Questo se sei sicuro di avere wget :-)
Uno scriptino cosě č poco piů complesso che
#include <stdio.h>
#include <ctype.h>
int main()
{
        int c;
        while(-1!=(c=getchar())) printf(isalnum(c)?"%c":"\\x%02x",c);
        return 0;
}
e lo usi una volta sola, per preparare gli script.
Leonardo (type-)punner


 teoria).
Il concetto e`: perche` devo reinventare qualcosa che gia` funziona? A 'sto 
punto uso FreeBSD e via...
Enrico

 e lo usi una volta sola, per preparare gli script.
Grazie dello script.
Considera, però, che il mio script per il dump si è evoluto rispetto
a quello di inizio thread. Oltre a fare il dump delle partizioni devo
fare anche il dump dei volumi LVM ed a 'sto punto integro anche lo
script che crea il dump di mysql, nel caso fosse presente, usando i
dati di connessione di debian-sys-maint
In sostanza, sono circa 100-150 di righe di script, codificarlo tutto
mi genererebbe una riga kilometrica.
Con wget invece automatizzerei il tutto ed in caso di update mi
basterebbe modificare il file sul server di backup senza nemmeno
ricaricare la configurazione di bacula. 

 punto uso FreeBSD e via...
bingo! a mancanza supplisco, non faccio della mancanza la necessità del 
cambiamento.
ma è un approccio individuale che richiederebbe un'analisi ben più profonda 
:-)
buona giornata^^


 cambiamento.
E se manca tutto, come nel caso di slackware, tu ogni volta
ti ricrei una distribuzione da zero?
Inoltre, sei soggetto agli umori di Pat, visto che viene
portata avanti praticamente solo da lui. Se un giorno si
alza scazzato, son dolori.


 dolori.
A parte che vi sono parecchie altre persone che concorrono (deve 
essere molto tempo che non leggi il Changelog) non sarebbe certamente 
peggio dei pasticci che ci sono stati in altre distribuzioni.
Almeno la slackware ti da i pacchetti come rilasciati dagli 
sviluppatori senza aggiungere ulteriori bugs.


 sviluppatori senza aggiungere ulteriori bugs.
Ed anche senza rimuoverli. La storia di openssl è ormai trita e ritrita ed è
un evento su mille altri in direzione opposta.
