Domanda per sviluppatori legata ad uno script

Aperto da Tanaka, Sabato - 27 Agosto 2022 - 12:37

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

Tanaka

Domanda per gli sviluppatori esperti:

io da sempre uso uno script per backuppare (lo lancio dal cron del server) il database del forum fino a 3 volte al giorno. Per anni, sempre tutto bene.

Ho cambiato server e adesso si comporta molto stranamente: passati circa 90 secondi dopo il lancio dello script, questi si ferma (me ne accorgo perchè "il peso" del file del backup si arresta) per un lungo periodo (diversi minuti) , poi riparte e finisce il lavoro.

Se per caso tento di usare gzip all'interno dello script, per comprimere i file di backup, questi zippa i file durante la pausa per cui mi genera dei file non completi e quindi, ho dei backup corrotti.


Di cosa si tratta ? Ho cercato di regolare il nuovo serve come il vecchio, ma forse ho sbagliato qualcosa. Che tipo di verifiche potrei fare ?

Grazie

Flavio93Zena

#1
Questo non è tanto per sviluppatori quanto per sistemisti, e dovrei qualificarmi.

Ti direi di modificare lo script e aggiungere di creare qualche tipo di log o comunque un mini-file ad ogni azione, per cercare di capire cosa si "pianta". Dall'ora di creazione di ogni piccolo file riuscirai a capire quale parte dello script causi problemi. In questo modo almeno avremo isolato il problema, dopo resterà da capire il motivo.
Alternativamente potresti lanciare lo script da SSH (assumo sia in BASH su un sistema LAMP o con nginx invece di Apache) e mettere un echo "Fatto questo", "Fatto quello" ad ogni azione e capire quale ci metta così tanto.

Tanaka

#2
Chiedo scusa ai sistemisti e agli sviluppatori per l'equivoco.

Grazie Flavio per il consiglio.

Lo script che uso è quello in allegato.

Io sostituisco solo user, password, db name e path per il file finale. Posso infine attivare o disattivare lo gzip (che peraltro da phpmyadmin neanche va, ma questa è un'altra storia).

Come posso modificarlo per mettere in pratica i tuoi consigli?

emanuele

Mio suggerimento spassionato: se puoi usare cron, butta a mare php e usa uno script sh.
Adesso non posso, ma appena torno posto quello che uso io.
mysqldump è molto più affidabile di php nel fare questi lavori.

Tanaka


aslupin3

Citazione di: emanuele il Sabato - 27 Agosto 2022 - 19:38Mio suggerimento spassionato: se puoi usare cron, butta a mare php e usa uno script sh.
Adesso non posso, ma appena torno posto quello che uso io.
mysqldump è molto più affidabile di php nel fare questi lavori.

@emanuele, un grazie anche da parte mia se decidi di rendere disponibile uno script del genere.

Mi sorge però una domanda.

Si può usare cron senza però avere (anche) la possibilità di lanciare script sh.
Mi riferisco ad esempio a servizi tipo cron-job . org, che permettono di impostare del cron, ma se il servizio su cui ci si appoggia è uno shared dubito che si possano lanciare sh.

Tanaka


emanuele

Credo sia:
https://www.ilsoftware.it/articoli.asp?tag=Backup-su-Google-Drive-automatico-da-server-Linux_12101
da cui avevo preso l'originale e modificato un po' (o comunque qualcosa di molto simile).

#!/bin/sh

now=$(date +"%Y_%m_%d")
file_name="name_prefix_$now"
full_path="/home/user_name/scripts/$file_name"

mysqldump -u root --password=db_password db_name > "$full_path.forum.sql"
zip -q -P a_password -r "$full_path.forum.sql.zip" "$full_path.forum.sql"
/usr/local/bin/drive upload -f "$full_path.forum.sql.zip" -t "$file_name.forum.sql.zip" -p directory_id

rm -f "$full_path.forum.sql"
rm -f "$full_path.forum.sql.zip"

zip -q -P a_password -r "$full_path.forum.files.zip" /var/www/path_to_site/htdocs/forum/ -x "*/Packages/*"

/usr/local/bin/drive upload -p directory_id -f "$full_path.forum.files.zip" -t "$file_name.forum.files.zip"

rm -f "$full_path.forum.files.zip"

Cose da rimpiazzare:
* name_prefix
* user_name
* root (che può essere root, oppure il nome dell'utente)
* db_password (o root password)
* db_name
* a_password (se vuoi avere uno zip con password)
* directory_id
* path_to_site

Poi in google apps script per cancellare i back obsoleti:
function FindEmptyFolders()
{
  return;
 
  var pageSize = 200;
  var folders = null;
  var token = null;
  var i = null;
  var thefolder_name = 'backup'; // Mettere il nome corretto
  var DeleteLimit = new Date().getTime() - 3600 * 1000 * 24 * 14;
 
  Logger.clear()
 
  var folders = DriveApp.getFoldersByName(thefolder_name);

  //token = result.getToken();
  while (folders.hasNext()) {
    var folder = folders.next();
    // http://stackoverflow.com/questions/25749906/permanently-delete-file-from-google-drive
    var files = folder.getFiles();
    while (files.hasNext()) {
      var file = files.next();
      if (file.getDateCreated().getTime() < DeleteLimit) {
        Logger.log(file.getName());
        Drive.Files.remove(file.getId());
      }
    }
  }

  MailApp.sendEmail('your email', 'Script eliminazione backup obsoleti', Logger.getLog());
}

Tanaka

Hey , grazie mille !

Appena ho un attimo, provo il tutto.

Discussioni simili (3)