Εξοικονομούμε δεδομένα. Αυτόματος συγχρονισμός με την υπηρεσία cloud Yandex.Disk χρησιμοποιώντας την επέκταση Link Shell. Επίλυση προβλημάτων με το πρόγραμμα Yandex.Disk Yandex disk πώς να συγχρονίσετε ένα αρχείο

Προσοχή. Το Yandex.Disk μπορεί να εγκατασταθεί σε 32-bit Windows XP Service Pack 3, Windows Vista, Windows 7, Windows 8 (κλασική διεπαφή), Windows 10 και macOS έκδοση 10.11 ή νεότερη (El Capitan, Sierra, High Sierra, Mojave) .

Ελέγξτε τη σταθερότητα της σύνδεσής σας στο Διαδίκτυο. Εάν χρησιμοποιείτε διακομιστές μεσολάβησης ή τείχη προστασίας, απενεργοποιήστε τα κατά την εγκατάσταση του προγράμματος.

Δεν είναι δυνατή η σύνδεση

Ελέγξτε τα δικαιώματα πρόσβασης του προγράμματος στο φάκελο Yandex.Disk και τα αρχεία σε αυτόν. Τα συγχρονισμένα αρχεία δεν πρέπει να ανοίγονται σε άλλα προγράμματα.

Ο δίσκος σας είναι γεμάτος

Ο χώρος στο δίσκο εξαντλήθηκε. Διαγράψτε ανεπιθύμητα αρχεία, αδειάστε τον Κάδο απορριμμάτων ή αγοράστε περισσότερο χώρο .

Ο συγχρονισμός φακέλου δεν είναι διαθέσιμος

Ο φάκελος που έχει επιλεγεί για συγχρονισμό δεν είναι αναγνώσιμος ή έχει διαγραφεί. Ελέγξτε αν υπάρχει αυτός ο φάκελος ή επιλέξτε άλλον.

Ο δίσκος δεν έχει ρυθμιστεί

Εγκαταστήσατε την εφαρμογή, αλλά δεν επιλέξατε φάκελο για συγχρονισμό και δεν συνδεθείτε στην εφαρμογή.

Διένεξη φακέλου συγχρονισμού

Ο φάκελος που καθορίζεται στις ρυθμίσεις της εφαρμογής χρησιμοποιείται ήδη με άλλον λογαριασμό Drive. Δεν μπορείτε να χρησιμοποιήσετε τον ίδιο φάκελο για συγχρονισμό με διαφορετικούς λογαριασμούς. Επιλέξτε διαφορετικό φάκελο στις ρυθμίσεις του προγράμματος.

Ο συγχρονισμός φακέλου δεν έχει επιλεγεί

Δεν έχετε επιλέξει φάκελο για συγχρονισμό με το Drive. Μπορείτε να επιλέξετε έναν φάκελο στις ρυθμίσεις του προγράμματος.

Δεν είναι δυνατή η μεταφόρτωση αρχείου μεγαλύτερου από 10 GB

Ο φάκελος Yandex.Disk περιέχει αρχεία μεγαλύτερα από 10 gigabyte. Δεν είναι δυνατή η αποστολή τέτοιων αρχείων στο δίσκο.

Το αρχείο δεν έχει συγχρονιστεί. Τι θα μπορούσε να συμβεί;

Το Yandex.Disk δεν μπορεί να μεταφορτώσει ένα αρχείο στον διακομιστή στις ακόλουθες περιπτώσεις:

    Ο υπολογιστής σας δεν είναι συνδεδεμένος στο Διαδίκτυο.

    Ο συγχρονισμός είναι απενεργοποιημένος στις ρυθμίσεις Yandex.Disk.

    το μέγεθος του αρχείου που πρόκειται να συγχρονιστεί είναι μεγαλύτερο από 50 GB.

    η πρόσβαση στο αρχείο είναι περιορισμένη (για παράδειγμα, το αρχείο χρησιμοποιείται από άλλο πρόγραμμα).

Εάν τα αρχεία βρίσκονται στο φάκελο Yandex.Disk και επισημαίνονται με το εικονίδιο στο πρόγραμμα, αλλά τα αρχεία δεν εμφανίστηκαν σε άλλους υπολογιστές ή στη διεπαφή ιστού, ενημερώστε μας μέσω της φόρμας στο κάτω μέρος της σελίδας.

Εάν το Avast Mac Security είναι εγκατεστημένο στο macOS σας, απενεργοποιήστε τη σάρωση ασφαλών συνδέσεων:

    Κάντε κλικ στο κουμπί Προτιμήσεις στην κάτω αριστερή γωνία του παραθύρου του προγράμματος.

    Στην ενότητα Οθόνη Ιστού, κάντε κλικ στο κουμπί Ρυθμίσεις (κάτω από το κουμπί Απενεργοποίηση).

    Απενεργοποιήστε την επιλογή Σάρωση ασφαλών συνδέσεων.

    Κάντε κλικ στο κουμπί Τέλος.

Το πρόγραμμα έχει κολλήσει σε κατάσταση "Συγχρονισμός"

Αλλάξτε τα μεγάλα ονόματα αρχείων στο φάκελο Yandex.Disk σε μικρότερα. Ελέγξτε εάν το πρόγραμμα έχει σταθερή πρόσβαση στο δίκτυο (τα antivirus και τα τείχη προστασίας μπορούν να εμποδίσουν τη σύνδεση).

Αργή ταχύτητα συγχρονισμού

Η ταχύτητα συγχρονισμού υπολογίζεται λαμβάνοντας υπόψη την εξοικονόμηση κίνησης και πόρων συστήματος. Επίσης, η ταχύτητα μπορεί να περιορίζεται από τον πάροχο σας - ελέγξτε την ταχύτητα της σύνδεσής σας στο Διαδίκτυο.

Κάθε φορά που αντιγράφετε ένα αρχείο σε έναν φάκελο Yandex.Disk, επεξεργάζεστε ή διαγράφετε ένα αρχείο, όλες οι αλλαγές αντιγράφονται στον διακομιστή Yandex.Disk: μπορείτε να τις δείτε στο . Και αντίστροφα - εάν ανεβάσετε αρχεία στον ιστότοπο, θα εμφανιστούν αυτόματα στο πρόγραμμα Yandex.Disk στον υπολογιστή σας.

Έτσι, τα ίδια αρχεία είναι ορατά στο Drive από όλες τις συσκευές σας που είναι συνδεδεμένες στο Διαδίκτυο. Και αν, για παράδειγμα, διαγράψετε αρχεία στον υπολογιστή σας, θα διαγραφούν και από το cloud. Εάν θέλετε να διαγράψετε ένα αρχείο από τον υπολογιστή σας αλλά να το διατηρήσετε στον διακομιστή, ρυθμίστε τον επιλεκτικό συγχρονισμό.

Σημείωση. Δεν θα μπορείτε να συγχρονίσετε αρχεία στο τηλέφωνό σας. Μπορείτε να κατεβάσετε και να ανεβάσετε αρχεία μόνο με μη αυτόματο τρόπο. Αλλά μπορείτε να ενεργοποιήσετε την απεριόριστη αυτόματη μεταφόρτωση φωτογραφιών και βίντεο.

Τι συμβαίνει όταν ένα αρχείο τροποποιείται ταυτόχρονα σε διαφορετικές συσκευές;

Ας υποθέσουμε ότι σχεδιάζετε μια εικόνα kartinka.jpg σε έναν υπολογιστή που είναι αποσυνδεδεμένος από το Διαδίκτυο και στη συνέχεια ανεβάζετε μια φωτογραφία με το ίδιο όνομα από το κινητό σας τηλέφωνο στο Δίσκο.

Όταν συνδέετε τον υπολογιστή σας στο Διαδίκτυο, το Yandex.Disk ξεκινά το συγχρονισμό. Έχοντας βρει διαφορετικά αρχεία με το ίδιο όνομα, ο Δίσκος θα μετονομάσει ένα από αυτά: ως αποτέλεσμα, τα αρχεία θα ονομαστούν kartinka.jpg και kartinka (2).jpg .

Επιλεκτικός συγχρονισμός φακέλων

Το πρόγραμμα Yandex.Disk 3.0 δεν σας επιτρέπει να συγχρονίσετε όλα τα αρχεία από τον Δίσκο σας με τον υπολογιστή σας για να εξοικονομήσετε χώρο στον υπολογιστή σας. Για παράδειγμα, εάν εργάζεστε συχνά με το φάκελο Documents, ενεργοποιήστε τον συγχρονισμό για αυτόν - αυτός ο φάκελος θα αποθηκευτεί στον υπολογιστή σας. Οι υπόλοιποι φάκελοι θα αποθηκευτούν μόνο στο cloud, αλλά θα είναι διαθέσιμοι και στο πρόγραμμα.

Αναλυτικές οδηγίες για τη ρύθμιση του επιλεκτικού συγχρονισμού:

Κατάσταση συγχρονισμού στο πρόγραμμα

Πώς συγχρονίζονται τα αλλαγμένα αρχεία;

Το Yandex.Disk καθορίζει ποια μέρη του αρχείου έχουν αλλάξει και ανεβάζει μόνο τα αλλαγμένα τμήματα στον διακομιστή και όχι ολόκληρο το αρχείο.

Σε πόσες συσκευές μπορώ να χρησιμοποιήσω το Yandex.Disk;

Θεωρητικά, μπορείτε να εγκαταστήσετε την εφαρμογή και το πρόγραμμα Yandex.Disk σε οποιονδήποτε αριθμό συσκευών, αλλά δεν συνιστούμε να το κάνετε αυτό. Εάν εργάζεστε με τα ίδια αρχεία σε διαφορετικές συσκευές ταυτόχρονα, ενδέχεται να προκύψουν διενέξεις - τα αρχεία ενδέχεται να αντιγραφούν ή να εξαφανιστούν.

Μπορώ να χρησιμοποιήσω αφαιρούμενα μέσα ως φάκελο συγχρονισμού;

Απενεργοποίησα τον συγχρονισμό αλλά τα αρχεία εξακολουθούν να καταλήγουν στο δίσκο

Τα αρχεία άλλων ατόμων μπορεί να καταλήξουν στο Yandex.Disk σας εάν συνδεθείτε από την κινητή συσκευή κάποιου άλλου. Σε αυτήν την περίπτωση, εάν είναι ενεργοποιημένη η αυτόματη μεταφόρτωση, τα αρχεία από τη συσκευή θα μεταφορτωθούν στο Yandex.Disk.

Μπορείτε να διακόψετε τη μεταφόρτωση αρχείων άλλων στο Yandex.Disk σας με τους εξής τρόπους:

Αποσύνδεση σε όλες τις συσκευές Για να αποτρέψετε την είσοδο αρχείων άλλων στο Yandex.Disk, αποσυνδεθείτε από το Yandex.Disk σε όλες τις συσκευές. Ανάκληση πρόσβασης στο πρόγραμμα

Μπορείτε επίσης να ανακαλέσετε την πρόσβαση για προγράμματα και εφαρμογές Yandex.Disk στα αρχεία σας στον διακομιστή.

Το Πρόγραμμα μπορεί να διαχειριστεί μόνο έναν Δίσκο - που ανήκει σε έναν συγκεκριμένο λογαριασμό. Εάν συνδεθείτε με διαφορετική σύνδεση, ένας νέος φάκελος Yandex.Disk με το όνομα "Yandex.Disk - άλλη σύνδεση". Ένα αντίγραφο των αρχείων του προηγούμενου λογαριασμού θα διατηρηθεί.

Τι συμβαίνει εάν μετακινήσω το φάκελο Yandex.Disk;

Εάν μετακινήσετε το φάκελο Yandex.Disk χωρίς να καθορίσετε μια νέα θέση στις ρυθμίσεις του προγράμματος, το πρόγραμμα θα δημιουργήσει ξανά το φάκελο στην αρχική του θέση. Για να μετακινήσετε το αντίγραφο του δίσκου, κάντε κλικ στο εικονίδιο Δίσκος, επιλέξτε Ρυθμίσεις από το μενού και κάντε κλικ Προσαρμόστε τη θέση του φακέλουκαι καθορίστε μια νέα διαδρομή προς το φάκελο: το πρόγραμμα θα μεταφέρει αυτόματα τα αρχεία σε μια νέα θέση.

Είναι δυνατή η αξιόπιστη λειτουργία προγραμμάτων τρίτων κατασκευαστών με το Yandex.Disk;

Δεν μπορώ να διατηρήσω αρχεία Drive στον υπολογιστή μου;

Το πρόγραμμα Yandex.Disk 3.0 δεν σας επιτρέπει να συγχρονίσετε όλα τα αρχεία από τον Δίσκο σας με τον υπολογιστή σας για να εξοικονομήσετε χώρο στον υπολογιστή σας. Για παράδειγμα, εάν εργάζεστε συχνά με το φάκελο Documents, ενεργοποιήστε τον συγχρονισμό για αυτόν - αυτός ο φάκελος θα αποθηκευτεί στον υπολογιστή σας. Οι υπόλοιποι φάκελοι θα αποθηκευτούν μόνο στο cloud, αλλά θα είναι διαθέσιμοι και στο πρόγραμμα.

Μπορείτε να ρυθμίσετε τον επιλεκτικό συγχρονισμό σύμφωνα με τις οδηγίες για τα Windows, για macOS.

Τι συμβαίνει εάν διαγράψω αρχεία από το φάκελο Yandex.Disk;

Όταν διαγράφετε αρχεία στο πρόγραμμα, πηγαίνουν στον Κάδο Ανακύκλωσης και αποθηκεύονται εκεί για 30 ημέρες. Μετά από αυτό, διαγράφονται αυτόματα από τον διακομιστή. Δεν είναι δυνατή η επαναφορά των αρχείων που έχουν διαγραφεί από τον διακομιστή.Μπορείτε να επαναφέρετε αρχεία από τον Κάδο Ανακύκλωσης μόνο στη διεπαφή ιστού Yandex.Disk.

Προσοχή. Τα αρχεία που μετακινούνται στον Κάδο απορριμμάτων συνεχίζουν να καταλαμβάνουν χώρο στο Drive σας. Εάν δεν έχετε αρκετό χώρο, αδειάστε τον Κάδο απορριμμάτων.

Εάν θέλετε να διαγράψετε ένα αρχείο από τον υπολογιστή σας αλλά να το διατηρήσετε στον διακομιστή, ρυθμίστε τον επιλεκτικό συγχρονισμό σύμφωνα με τις οδηγίες για τα Windows, για macOS.

Μπορώ να περιορίσω την πρόσβαση στο φάκελο Yandex.Disk;

Εάν θέλετε να κλείσετε έναν φάκελο, για παράδειγμα, από άλλους χρήστες του υπολογιστή σας, μπορείτε να περιορίσετε την πρόσβαση σε αυτόν χρησιμοποιώντας τυπικά εργαλεία των Windows. Ωστόσο, έχετε υπόψη σας ότι ο περιορισμός της πρόσβασης μπορεί να επηρεάσει τη λειτουργία του προγράμματος.

Τι συμβαίνει εάν απεγκαταστήσω το πρόγραμμα ή επανεγκαταστήσω το λειτουργικό σύστημα;

Τα αρχεία Drive ενδέχεται να παραμείνουν στον υπολογιστή σας, αλλά δεν θα συγχρονιστούν. Για να συγχρονίσετε αυτόματα τα αρχεία με τον διακομιστή, εγκαταστήστε το πρόγραμμα και συνδεθείτε.

Πώς να επιλέξετε άλλο φάκελο για συγχρονισμό με τον διακομιστή;

    Κάντε κλικ στο κουμπί Προσαρμόστε τη θέση του φακέλου.

    Καθορίστε έναν διαφορετικό φάκελο για συγχρονισμό με το διακομιστή.

Πώς μπορώ να μάθω πόσος ελεύθερος χώρος έχει απομείνει;

Πώς να ρυθμίσετε τις παραμέτρους του προγράμματος ώστε να λειτουργεί μέσω διακομιστή μεσολάβησης;

    Κάντε κλικ στο εικονίδιο Drive στην περιοχή ειδοποιήσεων.

    Επιλέξτε το στοιχείο μενού Ρυθμίσεις.

    Κάντε κλικ στην καρτέλα Proxy.

    ΕΠΕΛΕΞΕ ΕΝΑ ΑΝΤΙΚΕΙΜΕΝΟ Μη αυτόματες ρυθμίσεις διακομιστή μεσολάβησης.

Πώς να αποκρύψετε το εικονίδιο Drive στο Dock στο macOS;

    Κάντε κλικ στο εικονίδιο Drive στην περιοχή ειδοποιήσεων.

    Επιλέξτε το στοιχείο μενού Ρυθμίσεις.

    Κάντε κλικ στην καρτέλα Για προχωρημένους.

    Ενεργοποιήστε την επιλογή Απόκρυψη του εικονιδίου στο Dock.

  • Ανάπτυξη ιστοσελίδας ,
  • Αλγόριθμοι
  • Το Yandex.Disk είναι μία από τις λίγες υπηρεσίες Yandex που περιλαμβάνει λογισμικό επιτραπέζιου υπολογιστή. Και ένα από τα πιο σημαντικά στοιχεία του είναι ο αλγόριθμος για τον συγχρονισμό των τοπικών αρχείων με το αντίγραφό τους στο cloud. Πρόσφατα έπρεπε να το αλλάξουμε εντελώς. Εάν η παλιά έκδοση δυσκολευόταν να αφομοιώσει ακόμη και αρκετές δεκάδες χιλιάδες αρχεία και, επιπλέον, δεν ανταποκρινόταν αρκετά γρήγορα σε ορισμένες «σύνθετες» ενέργειες χρήστη, τότε η νέα, χρησιμοποιώντας τους ίδιους πόρους, αντιμετωπίζει εκατοντάδες χιλιάδες αρχεία.

    Σε αυτήν την ανάρτηση, θα σας πω γιατί συνέβη αυτό: τι δεν μπορούσαμε να προβλέψουμε όταν καταλήξαμε στην πρώτη έκδοση του λογισμικού Yandex.Disk και πώς δημιουργήσαμε τη νέα.

    Πρώτα απ 'όλα, σχετικά με την ίδια την εργασία συγχρονισμού. Από τεχνική άποψη, συνίσταται στο να έχετε το ίδιο σύνολο αρχείων στον φάκελο Yandex.Disk στον υπολογιστή του χρήστη και στο cloud. Δηλαδή, οι ενέργειες των χρηστών όπως η μετονομασία, η διαγραφή, η αντιγραφή, η προσθήκη και η αλλαγή αρχείων θα πρέπει να συγχρονίζονται αυτόματα με το cloud.

    Γιατί δεν είναι τόσο απλό όσο φαίνεται με την πρώτη ματιά;

    Θεωρητικά, το έργο μπορεί να φαίνεται αρκετά απλό, αλλά στην πραγματικότητα βρισκόμαστε αντιμέτωποι με διάφορες περίπλοκες καταστάσεις. Για παράδειγμα, ένα άτομο μετονόμασε έναν φάκελο στον υπολογιστή του, το εντοπίσαμε και στείλαμε μια εντολή στο backend. Ωστόσο, κανένας από τους χρήστες δεν περιμένει το backend για να επιβεβαιώσει την επιτυχία της μετονομασίας. Ένα άτομο ανοίγει αμέσως τον τοπικά μετονομασμένο φάκελό του, δημιουργεί έναν υποφάκελο σε αυτόν και, για παράδειγμα, μεταφέρει ορισμένα αρχεία σε αυτόν. Βρισκόμαστε σε μια κατάσταση στην οποία δεν είναι δυνατή η άμεση εκτέλεση όλων των απαραίτητων λειτουργιών συγχρονισμού στο cloud. Πρώτα πρέπει να περιμένετε την ολοκλήρωση της πρώτης λειτουργίας και μόνο τότε μπορείτε να συνεχίσετε.

    Η κατάσταση μπορεί να γίνει ακόμη πιο περίπλοκη εάν πολλοί χρήστες εργάζονται ταυτόχρονα με έναν λογαριασμό ή έχουν έναν κοινόχρηστο φάκελο. Και αυτό συμβαίνει αρκετά συχνά σε οργανισμούς που χρησιμοποιούν Yandex.Disk. Φανταστείτε ότι στο προηγούμενο παράδειγμα, τη στιγμή που λάβαμε επιβεβαίωση της πρώτης μετονομασίας από το backend, ένας άλλος χρήστης παίρνει και μετονομάζει ξανά αυτόν τον φάκελο. Σε αυτήν την περίπτωση, πάλι, δεν μπορείτε να εκτελέσετε αμέσως τις ενέργειες που έχει ήδη πραγματοποιήσει ο πρώτος χρήστης στον υπολογιστή του. Ο φάκελος στον οποίο δούλευε τοπικά καλείται ήδη διαφορετικά στο backend αυτή τη στιγμή.

    Υπάρχουν φορές που ένα αρχείο στον υπολογιστή ενός χρήστη δεν μπορεί να ονομαστεί όπως ονομάζεται στο cloud. Αυτό μπορεί να συμβεί εάν το όνομα περιέχει έναν χαρακτήρα που δεν μπορεί να χρησιμοποιηθεί από το τοπικό σύστημα αρχείων ή εάν ο χρήστης έχει προσκληθεί σε έναν κοινόχρηστο φάκελο και έχει το δικό του φάκελο με αυτό το όνομα. Σε τέτοιες περιπτώσεις, πρέπει να χρησιμοποιούμε τοπικά ψευδώνυμα και να παρακολουθούμε τη συσχέτισή τους με αντικείμενα στο cloud.

    Προηγούμενη έκδοση του αλγορίθμου

    Στην προηγούμενη έκδοση του λογισμικού επιφάνειας εργασίας Yandex.Disk, χρησιμοποιήθηκε ένας αλγόριθμος σύγκρισης δέντρων για την αναζήτηση αλλαγών. Οποιαδήποτε άλλη λύση εκείνη την εποχή δεν επέτρεπε την υλοποίηση της αναζήτησης για κινήσεις και μετονομασίες, καθώς το backend δεν είχε μοναδικά αναγνωριστικά αντικειμένων.

    Σε αυτήν την έκδοση του αλγορίθμου, χρησιμοποιήσαμε τρία κύρια δέντρα: τοπικό (Local Index), cloud (Remote Index) και το τελευταίο συγχρονισμένο (Stable Index). Επιπλέον, για να αποτραπεί η εκ νέου δημιουργία λειτουργιών συγχρονισμού που βρίσκονται ήδη σε ουρά, χρησιμοποιήθηκαν δύο ακόμη βοηθητικά δέντρα: το τοπικό αναμενόμενο και το αναμενόμενο cloud (Αναμενόμενο απομακρυσμένο ευρετήριο και Αναμενόμενο τοπικό ευρετήριο). Αυτά τα βοηθητικά δέντρα διατήρησαν την αναμενόμενη κατάσταση του τοπικού συστήματος αρχείων και του νέφους, αφού είχαν ολοκληρωθεί όλες οι λειτουργίες συγχρονισμού που ήταν ήδη στην ουρά.


    Η διαδικασία για τη σύγκριση των δέντρων στον παλιό αλγόριθμο ήταν η εξής:
    1. Εάν το τοπικό δέντρο αναμονής και το δέντρο αναμονής στο σύννεφο είναι κενά, αρχικοποιήστε τα αντιγράφοντας το τελευταίο συγχρονισμένο δέντρο.
    2. Συγκρίνουμε το τοπικό δέντρο με το αναμενόμενο σύννεφο και, με βάση τα αποτελέσματα της σύγκρισης μεμονωμένων κόμβων, προσθέτουμε λειτουργίες συγχρονισμού στο cloud στην ουρά (δημιουργία συλλογών, μεταφορά αρχείων στο cloud, μετακίνηση και διαγραφή στο σύννεφο).
    3. Για όλες τις λειτουργίες που βρίσκονται στην ουρά στο προηγούμενο βήμα, διορθώστε το μελλοντικό τους αποτέλεσμα στο αναμενόμενο δέντρο σύννεφων.
    4. Συγκρίνουμε το δέντρο cloud με το τοπικό αναμενόμενο και, με βάση τα αποτελέσματα της σύγκρισης μεμονωμένων κόμβων, προσθέτουμε λειτουργίες συγχρονισμού με το τοπικό σύστημα αρχείων στην ουρά (δημιουργία καταλόγων, λήψη αρχείων από το cloud, μετακίνηση και διαγραφή τοπικών αρχείων και καταλόγων )
    5. Για όλες τις λειτουργίες που βρίσκονται στην ουρά στο προηγούμενο βήμα, διορθώστε το μελλοντικό τους αποτέλεσμα στο αναμενόμενο τοπικό δέντρο.
    6. Εάν η ουρά περιλαμβάνει ταυτόχρονες λειτουργίες με το ίδιο αρχείο ή κατάλογο (για παράδειγμα, μεταφορά ενός αρχείου στο cloud και λήψη του ίδιου αρχείου από το cloud), τότε διορθώνουμε τη διένεξη - το αρχείο έχει αλλάξει σε δύο μέρη.
    7. Αφού εκτελεστεί η λειτουργία συγχρονισμού στο cloud ή με το τοπικό σύστημα αρχείων, εισάγουμε το αποτέλεσμά της στο τελευταίο συγχρονισμένο δέντρο.
    8. Όταν η ουρά συγχρονισμού γίνει κενή, διαγράψτε το δέντρο τοπικής αναμονής και το δέντρο αναμονής στο σύννεφο. Ο συγχρονισμός έχει τελειώσει και δεν θα τους χρειαζόμαστε πλέον.

    Γιατί έπρεπε να βρούμε έναν νέο αλγόριθμο

    Τα κύρια προβλήματα του αλγορίθμου σύγκρισης δέντρων ήταν η υψηλή κατανάλωση μνήμης και η ανάγκη σύγκρισης ολόκληρων δέντρων ακόμη και με μικρές αλλαγές, γεγονός που οδήγησε σε μεγάλο φορτίο στον επεξεργαστή. Ενώ η επεξεργασία αλλάζει ακόμη και σε ένα μόνο αρχείο, η χρήση RAM αυξήθηκε κατά περίπου 35%. Ας υποθέσουμε ότι ένας χρήστης είχε 20.000 αρχεία. Στη συνέχεια, με μια απλή μετονομασία ενός αρχείου 10 Kb, η κατανάλωση μνήμης αυξήθηκε απότομα - από 116 MB σε 167 MB.

    Θέλαμε επίσης να αυξήσουμε τον μέγιστο αριθμό αρχείων με τα οποία μπορεί να εργαστεί ένας χρήστης χωρίς προβλήματα. Για παράδειγμα, ένας φωτογράφος που αποθηκεύει τα αποτελέσματα των φωτογραφιών στο Yandex.Disk μπορεί να καταλήξει με αρκετές δεκάδες ή και εκατοντάδες χιλιάδες αρχεία. Αυτή η εργασία έγινε ιδιαίτερα σημαντική όταν οι άνθρωποι είχαν την ευκαιρία να αγοράσουν επιπλέον χώρο στο Yandex.Disk.

    Στην ανάπτυξη ήθελα κι εγώ να αλλάξω κάτι. Ο εντοπισμός σφαλμάτων της παλιάς έκδοσης ήταν δύσκολος επειδή τα δεδομένα κατάστασης για το ίδιο στοιχείο ήταν σε διαφορετικά δέντρα.

    Μέχρι εκείνη τη στιγμή, τα αναγνωριστικά αντικειμένων εμφανίστηκαν στο backend, με τη βοήθεια των οποίων ήταν δυνατό να λυθεί πιο αποτελεσματικά το πρόβλημα της ανίχνευσης κίνησης - νωρίτερα χρησιμοποιούσαμε διαδρομές.

    Νέος αλγόριθμος

    Αποφασίσαμε να αλλάξουμε τη δομή αποθήκευσης δεδομένων και να αντικαταστήσουμε τρία δέντρα (Local Index, Remote Index, Stable Index) με ένα, το οποίο θα έπρεπε να είχε οδηγήσει σε μείωση του πλεονασμού στην κύρια δομή δεδομένων. Λόγω του γεγονότος ότι το κλειδί στο δέντρο είναι η διαδρομή προς το στοιχείο του συστήματος αρχείων, ως αποτέλεσμα της συγχώνευσης, η ποσότητα της μνήμης RAM που χρησιμοποιήθηκε μειώθηκε σημαντικά.


    Επίσης, εγκαταλείψαμε τη χρήση βοηθητικών δέντρων κατά τον συγχρονισμό, επειδή κάθε στοιχείο του δέντρου στη νέα έκδοση αποθηκεύει όλα τα απαραίτητα δεδομένα. Αυτή η αλλαγή στη δομή απλοποιεί σημαντικά τον εντοπισμό σφαλμάτων του κώδικα.

    Εφόσον καταλάβαμε ότι επρόκειτο για μια σημαντική αλλαγή, δημιουργήσαμε ένα πρωτότυπο που επιβεβαίωσε την αποτελεσματικότητα της νέας λύσης. Ας πάρουμε ένα παράδειγμα του τρόπου με τον οποίο αλλάζουν τα δεδομένα στο δέντρο κατά τον συγχρονισμό ενός νέου αρχείου.

    1. Αφού ο χρήστης πρόσθεσε ένα νέο αρχείο στο φάκελο Drive, το πρόγραμμα το εντόπισε και πρόσθεσε ένα νέο στοιχείο στο δέντρο. Αυτό το στοιχείο έχει μόνο ένα κράτος, το τοπικό. Δεδομένου ότι δεν υπάρχουν σταθερές και απομακρυσμένες καταστάσεις, δεν εκχωρείται μνήμη για αυτές.
    2. Το πρόγραμμα εκτελεί μια μεταφόρτωση του αρχείου. Μια ώθηση έρχεται από το σύννεφο, επιβεβαιώνοντας την εμφάνιση ενός νέου αρχείου και η απομακρυσμένη κατάσταση προστίθεται στο δέντρο.
    3. Οι τοπικές και οι απομακρυσμένες πολιτείες συγκρίνονται. Εφόσον ταιριάζουν, προστίθεται μια σταθερή κατάσταση.
    4. Οι τοπικές και οι απομακρυσμένες πολιτείες καταργούνται. Δεν χρειάζονται πλέον, αφού όλες οι πληροφορίες είναι σταθερές.


    Αυτό το παράδειγμα δείχνει ότι στον νέο αλγόριθμο συγχρονισμού επεξεργάζονται μόνο εκείνα τα στοιχεία και τα συμβάντα, τα δεδομένα των αλλαγών στα οποία ελήφθησαν από το σύστημα αρχείων ή το σύννεφο και όχι ολόκληρο το δέντρο, όπως ήταν πριν. Εάν είναι απαραίτητο, οι γονικοί ή θυγατρικοί κόμβοι θα υποβληθούν σε επεξεργασία (για παράδειγμα, εάν μετακινηθεί ένας φάκελος).

    Άλλες βελτιώσεις

    Στη νέα έκδοση, δουλέψαμε και σε άλλες βελτιώσεις που επηρέασαν την απόδοση. Η αποθήκευση του δέντρου γίνεται σταδιακά, γεγονός που επιτρέπει την εγγραφή μόνο των πιο πρόσφατων αλλαγών στο αρχείο.

    Το Yandex.Disk χρησιμοποιεί χωνεύσεις sha256 και MD5 για να ελέγξει την ακεραιότητα του αρχείου, να εντοπίσει αλλαγμένα τμήματα και να αφαιρέσει αρχεία στο πίσω μέρος. Δεδομένου ότι αυτή η εργασία απαιτεί μεγάλη ένταση CPU, η υλοποίηση των υπολογισμών σύνοψης έχει βελτιστοποιηθεί σημαντικά στη νέα έκδοση. Η ταχύτητα απόκτησης σύνοψης αρχείου έχει διπλασιαστεί περίπου.

    Αριθμοί

    Συγχρονισμός μοναδικών 20.000 αρχείων των 10 Kb το καθένα

    Υπολογισμός αναλύσεων μοναδικών 20000 αρχείων 10 kb το καθένα (ευρετηρίαση)

    Εκτελείται από 20000 συγχρονισμένα αρχεία των 10 Kb

    Μεταφόρτωση 1Gb. Σύνδεση Wi-Fi 10 Mbps
    Χρόνος, δευτ

    Τι συνέβη

    Από τα παραδείγματα φαίνεται ότι η νέα έκδοση του λογισμικού Yandex.Disk χρησιμοποιεί περίπου 3 φορές λιγότερη μνήμη RAM και φορτώνει τη CPU περίπου 2 φορές λιγότερο. Η επεξεργασία μικρών αλλαγών δεν αυξάνει την ποσότητα της μνήμης που χρησιμοποιείται.

    Ως αποτέλεσμα των αλλαγών που έγιναν, ο αριθμός των αρχείων που μπορεί να χειριστεί το πρόγραμμα χωρίς προβλήματα έχει αυξηθεί σημαντικά. Η έκδοση των Windows έχει 300.000 αρχεία και η έκδοση Mac OS X έχει 900.000 αρχεία.

    Συνεχίζοντας το θέμα:
    Windows

    Σχεδόν όλοι οι χρήστες τόσο των iDevices όσο και των τηλεφώνων Android γνωρίζουν τον Tom. Αυτός είναι ο ίδιος χαρακτήρας ομιλίας που επαναλαμβάνει οποιαδήποτε λέξη μετά από ένα άτομο ή ...