Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Backup εργαλείο για website

Îåêßíçóå áðü ôï ìÝëïò tasos. Τελευταία δημοσίευση από το μέλος tasos στις 20-12-2008, 23:30. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  03-12-2008, 10:34 46660

    Backup εργαλείο για website

    Καλημέρα στην παρέα! Θα ήθελα τη γνώμη σας για τη βιβλιοθήκη SharpZipib. Έχει αναφερθεί η βιβλιοθήκη σε άλλες ερωτήσεις οπότε είπα να ρωτήσω.

    Χρησιμοποιώ τη βιβλιοθήκη για να φτιάξω ένα εργαλείο backup για μία ιστοσελίδα. Το backup το πέρνει ο πελάτης μέσα από ένα web interface και το .zip αρχείο κατεβαίνει αμέσως μόλις φτιαχτεί. Ο κώδικας που έφτιαξα, με βοήθεια από το forum είναι ο ακόλουθος:

    myZip = ZipFile.Create(curZipFile.FullName)
    For Each _File As String In myFiles
       myZip.BeginUpdate()
       myZip.NameTransform = New ZipNameTransform(_RootPath)
       myZip.Add(FileName)
       myZip.CommitUpdate()
    Next
    myZip.Close()

    Το πρόβλημα μου είναι ότι όταν ο συνολικός αριθμός των αρχείων είναι πάνω από 500-600 αρχίζει η διαδικασία να γίνεται πολύ αργά. Αν δεν χρησιμοποιήσω την .CommitUpdate() μετά από κάθε .Add(FileName) έχω αποτελέσματα πολύ πιο γρήγορα αλλά το .zip αρχείο είναι κατεστραμμένο. Από όσο διάβασα στο forum, δεν χρειάζεται η .CommitUpdate() μετά από κάθε .Add() αλλά μία φορά στο τέλος. Άρα μάλλον είναι κάποιο bug το οποίο δεν έχουν λύσει ακόμα.

    Οι ερωτήσεις μου:
    Ποιος είναι ο σωστός τρόπος χρήσης των BeginUpdate(), CommitUpdate() συναρτήσεων;
    Αν τελικά αυτή η λύση δεν αποδώσει, υπάρχει κάποια άλλη λύση για να κάνω backup;


    Τάσος Καραγιάννης

    Baby debugging steps...
    Δημοσίευση στην κατηγορία: ,
  •  03-12-2008, 10:44 46661 σε απάντηση της 46660

    Απ: Backup εργαλείο για website

    Χωρίς να ξέρω το εργαλείο αλλά πιο πολύ από κοινή λογική. Για δοκίμαζε να κάνεις commit μετά από 10 loops. Εμένα μου φαίνεται ότι αν το κάνεις στο τέλος τότε μάλλον γεμίζει η μνήμη του session και Lightning
    Για δοκίμασε το και πες μου.

    Manos
  •  03-12-2008, 10:50 46662 σε απάντηση της 46661

    Απ: Backup εργαλείο για website

    Το δοκίμασα αλλά κάθε 100 αρχεία. Τό αποτέλεσμα πάλι δεν είναι σωστό, αλλά αυτή τη φορά το .zip ανοίγει αλλά λείπουν αρχεία, κάποια δεν ανοίγουν. Μπορεί με το να βάλω 10 να είμαι οκ, αλλά δεν μπορώ να είμαι 100% σίγουρος.

    Δε νομίζω να είναι θέμα session, διότι την ίδια συμπεριφορά έχει και σε desktop εφαρμογή.


    Τάσος Καραγιάννης

    Baby debugging steps...
  •  20-12-2008, 23:30 47042 σε απάντηση της 46662

    Απ: Backup εργαλείο για website

    Τελικά την παράτησα τη βιβλιοθήκη αυτή και ασχολήθηκα με την System.IO.Packaging, η οποία φτιάχνει .zip αρχεία και είναι πάρα πολύ καλή όσο αφορά το χρόνο συμπίεσης. Σε περίπου 6 δευτερόλεπτα συμπιέζει αρχεία με συνολικό μέγεθος 32 ΜΒ, κάτι το οποίο βρήκα εντυπωσιακό.
    Στα αρνητικά της τώρα:
    • Το ποσοστό συμπίεσης δεν είναι πολύ καλό συγκριτικά με κάποιο zip εργαλείο. Αυτό οφείλεται στο γεγονός ότι συμπιέζει streams και όχι αρχεία.
    • Δεν επιτρέπονται κενά στα ονόματα των αρχείων και επίσης δεν δέχεται τους ελληνικούς χαρακτήρες. Για το πρώτο έκανα ένα workaround αλλά για τα ελληνικά δεν βρήκα κάτι.
    • Δεν μπορεί να διαβάσει .zip αρχεία που δεν έχουν δημιουργηθεί από την ίδια βιβλιοθήκη. Κατά τη δημιουργία ενός .zip αρχείου φτιάχνει και ένα .xml αρχείο το οποίο το χρησιμοποιεί για να διαβάσει τα περιεχόμενα του. Άρα ένα αρχείο φτιαγμένο πχ με το Winzip δεν θα διαβάζεται από την εφαρμογή μας.

    Τάσος Καραγιάννης

    Baby debugging steps...
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems