Koozali.org: home of the SME Server

Errore broken pipe

Errore broken pipe
« on: June 18, 2008, 05:26:36 PM »
Salve a tutti, mi ero fatto un file .sh con alcuni comandi personalizzati per effettuare il backup del mio SME Server, file che poi viene eseguito tramite chron.
Da oggi mi dà un errore strano, ho provato a vedere se c'era qualche problema con i processi del server (trovato niente di strano), e da ultimo ho pure riavviato la macchina (non ci sarebbe bisogno di farlo, ma non sapevo più che pesci pigliare).
L'errore è il seguente:

./run_backup.sh

/root/backup/backup_smeserver.sh: line 27:  4788 Pipe rotta              /bin/tar --directory / --create home/e-smith etc/e-smith/templates-custom etc/e-smith/templates-user-custom etc/passwd etc/shadow etc/group etc/gshadow etc/samba/secrets.tdb etc/samba/smbpasswd etc/smbpasswd etc/sudoers etc/ssh root --file=-
      4789                       | gzip
      4790 Done(141)               | ( echo put - "${FILE_BACKUP}"; cat )
      4792 Segmentation fault      | smbclient "//${SMBHOST}/${SMBSHARE}" "${SMBPASS}" -D "${SMBDIR}" -U "${SMBUSER}" >&/dev/null

Preciso che il backup da server-manager funziona normalmente (ma a me serve un backup personalizzato per evitare di backuppare alcune iBay i cui contenuti sono statici), e il file che si crea con il backup manuale è di circa 600 mega di taglia, mentre ora si interrompe quando è arrivato a circa 200 mega. Di solito gli errori di broken pipe sono causati da connessioni inaffidabili, e nel mio caso pensavo fosse dovuto al fatto che il pc su cui finisce il backup è collegato alla rete in wireless, ma poi l'ho collegato via rj45 e il problema continua a persistere...

Cercando un po' nel forum gli errori di broken pipe ho trovato solo problemi vecchissimi (< 2003) e non relativi: qualcuno sa indirizzarmi verso una soluzione?

Grazie,
Federico
« Last Edit: June 18, 2008, 05:46:13 PM by Lord Quicksilver »

Offline Stefano

  • *
  • 10,894
  • +3/-0
Re: Errore broken pipe
« Reply #1 on: June 18, 2008, 05:44:53 PM »
ciao

puoi postare qui lo script per cortesia, eventualmente eliminando i dati "sensibili"?

grazie

Stefano

p.s. chiaramente è per debug, non ti copio lo script :-)

Re: Errore broken pipe
« Reply #2 on: June 18, 2008, 05:55:02 PM »
Ciao.
Intanto grazie per l'interessamento :-)
Stavo modificando il topic a cui hai risposto, aggiungendo qualche informazione in più.

Lo script te lo incollo qui sotto, in realtà per comodità l'avevo diviso in due file, quindi te li incollo entrambi. Per il copyright vai tranquillo hehe sono per il software libero (a parte che ovviamente pure io il mio script l'ho messo giù prendendo pezzi qua e là)

run_backup.sh

Code: [Select]
#!/bin/sh

#EDIT THE EACH OF THE VARIABLE NAMES BELOW.

PC_NAME=$1
SHARE_NAME="share"
DIRECTORY="directory/directory"
USER_NAME="user_name"
PASSWORD="password"

/root/backup/backup_smeserver.sh $PC_NAME $SHARE_NAME $DIRECTORY $USER_NAME $PASSWORD

Poi c'è backup_smeserver.sh
Code: [Select]
#!/bin/sh

if [ $# -lt 5 ]; then
        echo "Usage: $(basename $0) <host> <share> <initial_directory> <user> <password>"
        exit 1;
fi

SMBHOST=$1
SMBSHARE=$2
SMBDIR=$3
SMBUSER=$4
SMBPASS=$5
if [ ${SMBHOST} = "host1" ]; then
        DATA_ODIERNA=`date +%y_%m_%d`;
        FILE_BACKUP="smeserver_${DATA_ODIERNA}.tgz"
fi
if [ ${SMBHOST} = "host2" ]; then
        GIORNO_ODIERNO=`date +%w_%a`;
        FILE_BACKUP="smeserver_${GIORNO_ODIERNO}.tgz"
fi

# /sbin/e-smith/signal-event mysql-delete-dumps
# /sbin/e-smith/signal-event mysql-dump-tables

/bin/tar --directory / --create home/e-smith etc/e-smith/templates-custom etc/e-smith/templates-user-custom etc/passwd etc/shadow etc/group etc/gshadow etc/samba/secrets.tdb etc/samba/smbpasswd etc/smbpasswd etc/sudoers etc/ssh root --file=- | gzip | ( echo put - "${FILE_BACKUP}"; cat ) | smbclient "//${SMBHOST}/${SMBSHARE}" "${SMBPASS}" -D "${SMBDIR}" -U "${SMBUSER}" &>/dev/null

# /sbin/e-smith/signal-event mysql-delete-dumps

Tre precisazioni: il file di backup in realtà lo uso per due macchine distinte, una che fa un backup tutti i giorni del pc sul mio portatile, backup che poi vengono masterizzati su dvd, e l'altra che esegue una rotazione su base settimanale (per questo la distinzione tra host1 e host2): è solo il portatile a dare problemi, da lì pensavo che dipendessero dalla rete inaffidabile. Seconda precisazione: le signal event di mysql le ho commentate perché da SME 7.03 mi davano un errore (comunque non ho db installati attualmente, forse l'errore veniva da lì).
Infine, questi due file funzionano perfettamente da un paio d'anni ormai (da SME 6.01).

Ciao

Offline Stefano

  • *
  • 10,894
  • +3/-0
Re: Errore broken pipe
« Reply #3 on: June 18, 2008, 06:06:36 PM »
Ciao

ho visto lo script e non so esserti di aiuto.. provo però a dare dei consigli

1) non serve fare il pipe con gzip, puoi dare il flag -z a tar
2) io eliminerei l'elenco di directory/file e lo inserirei in un file di testo (uno per riga) usando poi il flag --files-from=
3) da quel che ho capito il file tar viene zippato e messo on the fly su una condivisione.. farei la cosa per step, magari montando la condivisione con un mount in un mount-point temporaneo
4) il signal-event corretto da richiamare è pre-backup (che crea il dump dei db in /home/e-smith/db se non ricordo male)
5) opzionale: cambierei l'if con un case $host in... :-)

ritengo che tu naturalmente abbia già provato a far girare uno step alla volta lo script.. prima il tar, poi il tar + gzip, poi...

HTH
Ciao

Stefano

Re: Errore broken pipe [risolto]
« Reply #4 on: June 19, 2008, 09:13:54 AM »
Ciao, intanto grazie per i consigli sullo script, in effetti l'avevo scritto un bel po' di tempo fa ed erano anni che non ci mettevo mano (classico esempio del fatto che SME è una bomba).
Penso con buona probabilità di aver individuato il problema: intanto, avevo provato ad eseguire uno step alla volta, ma non avevo ottenuto nulla.
Cercando un po' con Google non ho trovato nessun problema particolare riconducibile all'errore di broken pipe, ovvero non esiste un bug in particolare su SME o CentOS che causi quell'errore, e la cosa mi ha insospettito alquanto. L'unica "costante" se così si può chiamare relativa al problema di broken pipe è di gente a cui, per un motivo o per l'altro, "scompare" la macchina su cui stavano lavorando in rete (per esempio, per un cavo malfunzionante, o perché ha finito lo spazio libero su disco, o perché il wireless è inaffidabile).

Quindi sono partito dal presupposto che l'errore non fosse di SME, ma dell'hardware.

Insomma per farla breve sono andato a controllare il router wired cercando il classico "cavo scollegato dalla donna delle pulizie" (scusate il maschilismo), ma sono rimasto deluso, era acceso e funzionante... almeno stando alle spie luminose. In realtà era in quello stato di malfunzionamento in cui ogni tanto finiscono i router quando vengono "sovraccaricati", tipo quando stai scaricando a manetta con eMule acceso ininterrottamente da 2 mesi. La banale soluzione è stata quindi quella di spegnere e riaccendere il router, e per ora l'errore è scomparso (e anche il mio download rate - sigh): ho provato un backup e ha funzionato.
Devo dire che sono stato fregato dal fatto che il backup sull'altra macchina funzionava bene (mistero della fede, questa non l'ho proprio capita).

In ogni caso grazie Stefano per i consigli sullo script.

Federico

Backup: smbclient Vs smbmount [was Re: Errore broken pipe [risolto]]
« Reply #5 on: June 19, 2008, 11:54:22 AM »
Ciao a tutti.
Ho messo in atto le modifiche che mi ha suggerito Stefano in questo stesso thread, e in effetti ci si guadagna molto in chiarezza.
Volevo chiedere come mai si può preferire la soluzione di mount a quella on the fly con samba, è una questione di stile o c'è qualche ragione solida (sicurezza, stabilità, ecc.)?

Ciao
Federico
« Last Edit: June 20, 2008, 10:04:20 AM by Lord Quicksilver »

Offline Stefano

  • *
  • 10,894
  • +3/-0
Re: Errore broken pipe
« Reply #6 on: June 19, 2008, 12:28:38 PM »
Ciao

sostanzialmente se usi un mount puoi verificare se il mount va a buon fine e quindi agire di conseguenza..

HTH
Stefano