# [risolto] errore integrity check del tar

## funkoolow

salve,

uso da qualche tempo questo comodissimo script per farmi lo stage 4. tutto bene fino all'ultimo backup che proprio non riesco a portare a termine, o meglio, viene portato a termine ma poi, dopo il controllo d'integrità del file .tar che ne dovrebbe risultare, mi viene puntualmente segnalato il fallimento.

```
* Checking integrity

* Integrity check failed. Rerun the script and check your hardware
```

ho già postato nel relativo thread, e l'autore dello script mi ha detto in mess pvt che magari potrebbe essersi sputtanato il bash. voi altri luminari che mi dite? io al max ho pensato di provare a far decomprimere l'arichivio ad un altra macchina e vedere se va tutto bene, ma magari voi mi sapete consigliare qualcosa di più certo ed immediato!

grazie!

----------

## randomaze

 *funkoolow wrote:*   

> ho già postato nel relativo thread, e l'autore dello script mi ha detto in mess pvt che magari potrebbe essersi sputtanato il bash.

 

Più luminari dell'autore dello script mi sembra difficile.

Sicuramente suggerirei di verificare l'integrita scompattando il tarball da qualche parte, se il problema non é li potresti provare ad leggere lo script, cercare le righe incriminate che fanno il controllo e seguire manualmente i passi per cercare il punto esatto dove si verifica il problema.

----------

## funkoolow

ho contattato l'autore dello script il quale sostanzialmente mi ha detto di non riuscire proprio a capire quale possa essere il punto della questione.

In breve, essendo secondo lui un problema legato al mio sistema in particolare, mi aveva consigliato di provare a riemergere il bash, dato che spesso, oltre all'errore sul controllo di integrità dell'archivio, mi veniva riportato questo, durante la lavorazione:

```
sh: line 1:  8843 Done(141)               ( /usr/bin/find /var/db; echo /var/log/emerge.log; echo /usr/src; echo /usr/portage; echo /tmp; echo /sys; echo /proc; echo /mnt; echo /home; echo /dev/console; echo /dev/null; /usr/bin/find /usr/src/linux-2.6.11-gentoo-r9 -print; /usr/bin/find /home/t0mcat -print; /usr/bin/find /home/funkweb -print; /usr/bin/find /home/funkoolow -print; /usr/bin/find /home/ftp -print; /usr/bin/find /* -path /dev -prune -o -path /lost+found -prune -o -path /mnt -prune -o -path /proc -prune -o -path /sys -prune -o -path /tmp -prune -o -path /usr/portage -prune -o -path /usr/src -prune -o -path /var/log -prune -o -path /var/tmp -prune -o -path /var/db -prune -o -path /var/cache/edb -prune -o -path /mnt/p4-camera -prune -o -path /home/ftp -prune -o -path /home/funkoolow -prune -o -path /home/funkweb -prune -o -path /home/t0mcat -prune -o -path /usr/src/linux-2.6.11-gentoo-r9 -prune -o -print )

      8845 Broken pipe             | /bin/tar --bzip2 --preserve-permissions --create --absolute-names --totals --ignore-failed-read -v --file /mnt/p4-camera/funkserver-stage4-2005.07.17-custom.tar.bz2 --no-recursion -T -

* stage4 is done

* umounting boot

* Checking integrity

* Integrity check failed. Re-run the script and check your hardware.
```

questa faccenda del broken pipe aveva fatto sospettare al tipo che appunto potesse essere un errore specifico del mio sistema, ma riemergere il bash non è servito a niente, dato che l'errore di integrity check ancora si presenta. Non gli è rimasto altro che suggerirmi un

```
emerge -e world
```

oppure

```
emerge -e system
```

L'assurdità è che il sistema mi funziona perfettamente, niente errori in fase di avvio, tutti i servizi performanti, etc. Possibile che non esista un modo per sapere cosa succeda senza doversi buttare in una ricompilazione totale e neanche sicura come risolutiva?

chiedo a voi. grazie in anticipo!

----------

## funkoolow

Niente da fare, sono ormai sicuro che ci sia qualcosa di piu grosso e grave dietro questa faccenda, dato che il problema persiste sia dopo un emerge -e system da una giornata che dopo un emerge -e world di tre giorni e mezzo. Nessuno ha qualche suggerimento su cosa potrebbe essere? Nel caso fosse magari un problema di hd (la butto là), che soluzioni mi sapete indicare?

grazie a tutti!  :Smile: 

----------

## funkoolow

scusate se uppo, ma è vitale riuscire a risolvere, adesso come adesso sono impossibilitato a backuppare in maniera efficace... nessuno ha un idea, un consiglio, un suggerimento?

 :Crying or Very sad: 

----------

## ProT-0-TypE

il check del filesystem lo hai fatto? (non si sa mai..)

----------

## funkoolow

hmmm, no. puoi dirmi come fare? sono piuttosto niubbone  :Embarassed: 

----------

## morellik

Ho provato lo script e sfortunatamente per te non mi ha dato l'errore che dà a te.

Per  fugare qualsiasi dubbio sul funzionamento dei vari bash e simili, potresti eseguire manualmente alcuni passi dello script come suggerito da randomize.

```
find DIRECTORY -path -prune -o -print |tar --bzip2 --preserve-permissions --create --absolute-names --totals --ignore-failed-read --file test.tbz2 --no-recursion -T -
```

Questo comando ti crea il file test.tbz2 col contenuto di DIRECTORY .

Poi prova ad eseguire il test di integrità:

```
bzip2 --test test.tbz2
```

Quest'ultimo comando non dovrebbe restituire niente se tutto è ok.

Facci sapere l'esito dei test.

Ciauz

morellik

----------

## funkoolow

intanto ho provveduto ad eseguire via livecd il test del filesystem di hda3 (ovvero la mia root):

```

livecd root # fsck /dev/hda3

fsck 1.35 (28-feb-2004)

e2fsck 1.35 (28-feb-2004)

/dev/hda3 has been mounted 59 times without being checked, check forced.

Pass 1: Checking inodes, blocks, and sizes

Pass 2: Checking directory structures

Pass 3: Checking directory connectivity

Pass 4: Checking reference counts

Pass 5: Checking group summary information

/dev/hda3: 459631/2501856 files (3.7% non-contiguous), 2859158/5002239 blocks
```

per quello che posso capire, il file system mi sembra a posto, o sbaglio?

----------

## morellik

 *funkoolow wrote:*   

> intanto ho provveduto ad eseguire via livecd il test del filesystem di hda3 (ovvero la mia root):
> 
> ```
> 
> livecd root # fsck /dev/hda3
> ...

 

Sì, sembrerebbe tutto a posto.

Prova a fare il test del post precedente.

Ciauz

morellik

----------

## funkoolow

intanto grazie per l'aiuto che mi state dando.

ho provato a compattare una dir qualunque della mia home ed ecco il risultato:

```
funkserver home # ls

ftp  funkoolow  funkweb  t0mcat

funkserver home # find funkoolow -path -prune -o -print |tar --bzip2 --preserve-permissions --create --absolute-names --totals --ignore-failed-read --file test.tbz2 --no-recursion -T -

Total bytes written: 18001920 (18MiB, 543KiB/s)

funkserver home # ls

ftp  funkoolow  funkweb  t0mcat  test.tbz2

funkserver home # bzip2 --test test.tbz2

funkserver home # 
```

stavolta non segnala nessun errore di integrità, quindi presumo sia andato tutto a posto...

----------

## morellik

Infatti è tutto a posto.

Con lo script usi gzip o bzip2 per la compattazione?

morellik

----------

## funkoolow

uso l'opzione 4, quella interactive con bz2. ho provato per scrupolo anche con gzip e capita lo stesso il problema. Ma questo errore "broken pipe" cosa indica? cioè, da dove può generarsi un "broken pipe"? ram? hd? fs? magari capendo quello si può risalire al problema...

----------

## morellik

Un errore "broken pipe" significa che un processo finisce prima di un altro.

Nel nostro caso ci sono due comandi (find e tar) che sono in quella che si chiama pipe indicata

dal simbolo |. Questo significa che l'output prodotto dal primo comando viene processato dal secondo.

In alcuni casi potrebbe essere dovuto a disco pieno o poca ram in altri potrebbe essere ignorato.

Le cose che puoi provare sono:

1) eseguire il comando come utente root (se già non lo facevi)

2) provare un'altra shell (sembra che la tcsh ignori i broken pipe non consistenti)

3) usare il mkstage4 splittando i tarfile con l'opzione -s

Ciauz

morellik

----------

## funkoolow

ecco le relative risposte:

1) già provavo da utente root

2) qua non so francamente di che se stia parlando...  :Embarassed: 

3) questo lo sto provando or ora, forse è quello che fa al caso mio. farò sapere.

grazie cmq della costante assistenza messere!

----------

## funkoolow

uhm, non è andata bene lo stesso:

```
funkserver funkoolow # ./mkstage4.sh -s

Backup script v3.5

==================

What do you want to do? (Use CONTROL-C to abort)

Fast (tar.gz):

 (1) Minimal backup

 (2) Interactive backup

Best (tar.bz2):

 (3) Minimal backup

 (4) Interactive backup

Please enter your option: 4

Do you want to backup /home/ftp? (y/n) y

Do you want to backup /home/funkoolow? (y/n) y

Do you want to backup /home/funkweb? (y/n) y

Do you want to backup /home/t0mcat? (y/n) y

Do you want to backup /home/test.tbz2? (y/n) y

Do you want to backup /usr/src/linux-2.6.12-gentoo-r6? (y/n) y

* mounting boot

Do you want to continue? (y/n) y

* Please wait while the stage4 is being created.

/bin/tar: /var/lib/courier/authdaemon/socket: socket ignored

/bin/tar: /var/run/cgisock: socket ignored

/bin/tar: /var/run/mysqld/mysqld.sock: socket ignored

/bin/tar: /var/spool/postfix/private/rewrite: socket ignored

/bin/tar: /var/spool/postfix/private/bounce: socket ignored

/bin/tar: /var/spool/postfix/private/defer: socket ignored

/bin/tar: /var/spool/postfix/private/trace: socket ignored

/bin/tar: /var/spool/postfix/private/verify: socket ignored

/bin/tar: /var/spool/postfix/private/proxymap: socket ignored

/bin/tar: /var/spool/postfix/private/smtp: socket ignored

/bin/tar: /var/spool/postfix/private/relay: socket ignored

/bin/tar: /var/spool/postfix/private/error: socket ignored

/bin/tar: /var/spool/postfix/private/local: socket ignored

/bin/tar: /var/spool/postfix/private/virtual: socket ignored

/bin/tar: /var/spool/postfix/private/lmtp: socket ignored

/bin/tar: /var/spool/postfix/private/anvil: socket ignored

/bin/tar: /var/spool/postfix/private/maildrop: socket ignored

/bin/tar: /var/spool/postfix/private/old-cyrus: socket ignored

/bin/tar: /var/spool/postfix/private/cyrus: socket ignored

/bin/tar: /var/spool/postfix/private/uucp: socket ignored

/bin/tar: /var/spool/postfix/private/ifmail: socket ignored

/bin/tar: /var/spool/postfix/private/bsmtp: socket ignored

/bin/tar: /var/spool/postfix/public/cleanup: socket ignored

/bin/tar: /var/spool/postfix/public/flush: socket ignored

/bin/tar: /var/spool/postfix/public/showq: socket ignored

Total bytes written: 3882434560 (3.7GiB, 412KiB/s)

* stage4 is done

* umounting boot

* Checking integrity

* Integrity check failed. Re-run the script and check your hardware.

```

mi viene un dubbio: ho notato che in effetti le dimensioni dell'archivio superano i 2gb, non vorrei che ci fosse una specie di limite date le limitate potenzialità del mio hw (tanto per dare un idea: ram 172mb, p3@500). gli altri backup andavano tutti bene e risultavano 1,91gb max...

sembra una cosa plausibile?

----------

## morellik

Per quanto riguarda il punto 2, si possono scegliere diverse shell come interpreti dei comandi.

Di default Gentoo usa la bash, ma si può anche usare un'altro interprete di comandi per esempio

la tcsh.

```

# emerge tcsh

# tcsh

tcsh>

```

Per il resto, ho letto da qualche parte che c'era un limite di 2GB nelle dimensioni massime di un file dovuto al filesystem ext2 e primi ext3 a vecchie versioni delle glibc e del kernel  che ora dovrebbero essere risolti.

Probabilmente però hai un sistema che non regge file maggiori di 2GB a causa della mancanza di RAM e di un proc non troppo brillante.

Ciauz

morellik

----------

## funkoolow

ok, sto testando la storia del limite dei due gb escludendo alcune voluminose directories dal backup. mi resta anche l'altra curiosità di tutti quei

```
[...]

/bin/tar: /var/lib/courier/authdaemon/socket: socket ignored

/bin/tar: /var/run/cgisock: socket ignored

/bin/tar: /var/run/mysqld/mysqld.sock: socket ignored

/bin/tar: /var/spool/postfix/private/rewrite: socket ignored

/bin/tar: /var/spool/postfix/private/bounce: socket ignored

[...]
```

in output durante la creazione del backup...

cmq ancora grazie davvero del supporto, egregio  :Smile:   :Smile:   :Smile: 

----------

## gutter

Non avrebbe senso fare il backup delle socket create dai programmi  :Wink:  dal momento che poi verranno ricreate quando il programma verrà ristartato.

----------

## funkoolow

dopo svariati tentativi, la cosa ancora non si è risolta. Noto che l'archivio risulta sempre attorno ai 2 gb, il che forse potrebbe essere la spia del problema legato a quel limite per i fs ext2 ed ext3, come riportato da morellik qualche post fa. Non è che devo attivare qualche opzione nel kernel (al mom uso il v2.6.12-gentoo-r6) per eliminare quel limite? ecco la mia cfg del kernel nella sezione file systems:

```
<*> Second extended fs support

[ ]   Ext2 extended attributes 

<*> Ext3 journalling file system support 

[*]   Ext3 extended attributes

[ ]     Ext3 POSIX Access Control Lists

[ ]     Ext3 Security Labels

[ ] JBD (ext3) debugging support

< > Reiserfs support 

< > JFS filesystem support

  XFS support  --->   

< > Minix fs support                                             

< > ROM file system support                                              

[*] Inotify file change notification support (NEW)                 

[ ] Quota support                                                    

< > Kernel automounter support                                    

<*> Kernel automounter version 4 support (also supports v3)                 

  CD-ROM/DVD Filesystems  --->                                              

  DOS/FAT/NT Filesystems  --->                                     

  Pseudo filesystems  --->                                         

  Miscellaneous filesystems  --->                                      

  Network File Systems  --->                                        

  Partition Types  --->                                

  Native Language Support  --->
```

ah, per quanto riguarda le glibc:

```
funkserver linux # emerge -p glibc

These are the packages that I would merge, in order:

Calculating dependencies ...done!

[ebuild   R   ] sys-libs/glibc-2.3.5
```

grazie a tutti cmq dell'aiuto e dei suggerimenti, spero di riuscire a risolvere sta situazione  :Smile: 

----------

## funkoolow

ommioddio, mi sa che ho risolto! ho aggiunto

```
-D_FILE_OFFSET_BITS=64
```

nel mio make.conf come indicato in questo topic e, dopo la ricompilazione di tar e bzip, l'errore di integrità non avviene più. pare fosse decisamente tutto legato a questo limite dei 2gb per i fs ext2 ed ext3.

grazie a tutti delle risposte  :Smile: 

----------

