Visualizzazione risultati 1 fino 8 di 8
Like Tree1Likes
  • 1 Post By alemoppo

Discussione: Backup programmato per un singolo file

  1. #1
    pwtng non è connesso Utente giovane
    Data registrazione
    15-01-2008
    Messaggi
    87

    Predefinito Backup programmato per un singolo file

    Non trovando la sezione adatta ho pensato di scrivere qui, spero vada bene.

    Ho bisogno di fare il backup di un singolo file ogni tot tempo (tipo ogni ora circa). Sarebbe possibile? Esiste un sito, o un qualcosa da inserire direttamente nel sito o non so, qualcosa, che mi permetterebbe di farlo? Grazie a tutti.

    P.S.: Per essere piu chiaro vorrei spiegare il motivo. Un file all'interno di CuteNews - un CMS per l'amministrazione delle news che utilizzo nel mio sito - tende a cancellarsi, a diventare da scritto a bianco, quasi per magia da un momento all'altro. Questo è il file in cui vengono memorizzati tutti i commenti scritti dagli utenti, e quindi è un grosso problema. Nel frattempo che trovo una soluzione, pensavo di fare un backup di quel file. Così che, quando all'improvviso diventera bianco, io avrò il mio backup per ricaricare tutti i commenti.

  2. #2
    Guest

    Predefinito

    Puoi scrivere uno script PHP. Da quello che ho capito il file è un file di testo no? Puoi usare file_put_contents e file_get_contents. E poi con un servizio esterno (easycron o uptimerobot) innescare la pagina PHP ogni tot.

  3. #3
    pwtng non è connesso Utente giovane
    Data registrazione
    15-01-2008
    Messaggi
    87

    Predefinito

    Si, è un file .txt ...e la tua soluzione sarebbe ottima, ma il problema è che non saprei scriverlo... la mia conoscenza del PHP è quasi nulla, dovrei provare a chiedere a qualcuno la cortesia di scrivermelo nella sezione PHP del forum...

  4. #4
    Guest

    Predefinito

    Prova con

    <?php
    $db = file_get_contents("percorso del file");
    file_put_contents("percorso nuovo file".time(), $db);
    ?>

    Devi mettere il codice sopra in una pagina PHP. Prova a vedere se ti funziona, sono dal cellulare e potrei aver sbagliato qualcosa. Fai la prova con un file di prova prima di passare al database. Il comando time() serve per salvare un file nuovo ogni volta. Altrimenti sovrascriveresti sempre lo stesso file e se il file originale per qualche motivo è già vuoto allora anche la copia di sicurezza diventerebbe vuota.
    Ultima modifica di mry : 23-08-2014 alle ore 01.24.59

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,688

    Predefinito

    Il problema è se sovrascrivere ogni volta il file o no: si potrebbe controllare se il file è vuoto, e quindi non sovrascrivere il backup. E se qualcuno poi scrive un nuovo commento, viene sovrascritto tutto il backup!
    Quindi l'unica soluzione, temo, sia fare un nuovo file ogni volta (essendo commenti, dovrebbero occupare pochissimo spazio).

    Si potrebbe fare uno script PHP del genere:

    Codice PHP:
    <?php
    $file_da_salvare
    = 'commenti.txt';
    $cartella = './backups';
    $intervallo_secondi = 3600; //non più di ogni ora (ovviamente puoi impostarlo come vuoi)

    //-----

    if(!is_dir($cartella))
    if(!
    mkdir($cartella))
    echo
    'Errore: non posso creare la cartella per il backup commenti!';

    $files = glob($cartella);
    $files = sort($file);

    $file = substr (end($files), strlen($cartella));

    if(
    time() - $file > $intervallo_secondi)
    copy($file_da_salvare, $cartella.'/'.time());
    ?>
    Includerei questo file in una pagina dove gli utenti la visitano spesso... la home o non so.
    Puoi quindi creare un file chiamato tipo "backup.php" (è importante l'estensione .php), e inserirlo in una pagina che gli utenti visitano spesso ad esempio in questo modo:

    Codice PHP:
    include('backup.php');
    In realtà puoi anche inserirlo direttamente nella pagina... come preferisci.


    EDIT: ops, anticipato! Vabè, lascio perché il mio dovrebbe fare il controllo di salvarlo una volta ogni tempo impostato... Comunque non è necessario l'uso delle file_get_contents() e file_put_contents(): è sufficiente copy() .

    Ciao!
    Ultima modifica di alemoppo : 23-08-2014 alle ore 01.41.13
    pwtng likes this.

  6. #6
    pwtng non è connesso Utente giovane
    Data registrazione
    15-01-2008
    Messaggi
    87

    Predefinito

    Grazie mille!! Ma ci dev'essere qualcosa che non va perchè mi da errore sulla 3a linea...

    "Fatal error: Call to undefined function: file_put_contents() in /membri/pwtng/cutenews/prova/backup.php on line 3"

    Io ho solo aggiunto il nome del file al tuo codice:

    <?php
    $db = file_get_contents("comments.txt");
    file_put_contents("comments.txt".time(), $db);
    ?>

  7. #7
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,688

    Predefinito

    Probabilmente devi attivare php 5.3 dal pannello di controllo per quelle funzioni. Comunque prova il "mio" che non utilizza quelle funzioni.

    Ciao!
    Ultima modifica di alemoppo : 23-08-2014 alle ore 01.53.28

  8. #8
    pwtng non è connesso Utente giovane
    Data registrazione
    15-01-2008
    Messaggi
    87

    Predefinito

    Il codice dell'utente che ti ha preceduto, con il tuo consiglio di cambiare con copy(), funziona a meraviglia adesso. Grazie mille! Il tuo codice lo sto provando, ma mi da "Errore: non posso creare la cartella..." ma non capisco dov'è il problema.

    EDIT: Ok risolto, adesso anche il tuo codice funziona alla perfezione. Grazie mille a entrambi! :D
    Ultima modifica di pwtng : 23-08-2014 alle ore 02.13.33

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •