rsync μέσω VPN: μια νέα προσπάθεια που επαναχρησιμοποιεί τη σπασμένη μεταφορά
Μια σήραγγα που πέφτει τελειώνει τη σύνδεση, όχι τα δεδομένα. Κρατήστε το τμήμα με --partial-dir, εκτελέστε ξανά το ίδιο αντίγραφο και επαληθεύστε το αρχείο πριν το δημοσιεύσετε.
Το ανέβασμά σας κολλάει στα τέσσερα γιγαμπάιτ ενός αρχείου δώδεκα γιγαμπάιτ, και η συνήθεια από τους διαχειριστές λήψεων λέει να πατήσετε συνέχεια. Το rsync δεν θα συνεχίσει τη ροή TCP, γιατί αυτή η ροή χάθηκε με την τελευταία αναμετάδοση της σήραγγας. Αυτό που μπορεί να κάνει είναι να κρατήσει τα byte που έχει ήδη λάβει και να τα χρησιμοποιήσει ως βάση για την επόμενη προσπάθεια, που είναι άλλος μηχανισμός με άλλο σύνολο κανόνων. Οι σημαίες που θα διαλέξετε καθορίζουν αν αυτή η επαναχρησιμοποίηση θα συμβεί καθόλου.
Η νέα προσπάθεια ξαναχτίζει κατάσταση, δεν συνεχίζει τη ροή
Όταν η συνεδρία SSH πέσει, στο απομακρυσμένο άκρο μένει μόνο ό,τι πρόλαβε να γράψει στον δίσκο και τίποτε άλλο. Δεν υπάρχει διακριτικό συνεδρίας για να προσκολληθείτε ούτε αριθμός ακολουθίας για αναπαραγωγή. Η επόμενη εκτέλεση ανοίγει νέα σύνδεση, διαβάζει ξανά την πηγή και ρωτά τον παραλήπτη τι έχει ήδη.
Αυτή η τελευταία ερώτηση εξηγεί γιατί αξίζει να κρατήσετε ένα μερικό αρχείο. Το αντίγραφο του παραλήπτη δίνει στο rsync κάτι για σύγκριση, και ο αλγόριθμος στέλνει μόνο τις διαφορές που μπορεί να εντοπίσει. Είναι ακόμη μια νέα μεταφορά μεταδεδομένων και ένα νέο πέρασμα από την πηγή, άρα ο χρόνος που κερδίζεται είναι ανάλογος με το πόσο από το αρχείο ταιριάζει, όχι με το πόσο είχε προχωρήσει η προηγούμενη σύνδεση. Αν ο παραλήπτης δεν κράτησε τίποτα, η επόμενη προσπάθεια είναι πλήρες αντίγραφο, όσα γιγαμπάιτ κι αν μετακίνησε η πρώτη.
Αποφασίστε πού ζει το επαναχρησιμοποιήσιμο τμήμα
Η προεπιλεγμένη συμπεριφορά γράφει το μερικό αρχείο στη διαδρομή προορισμού, κάτι που κάνει ένα μισογραμμένο αρχείο ορατό με το τελικό όνομα. Το --partial-dir το μετακινεί σε κατάλογο της επιλογής σας, και το εγχειρίδιο περιγράφει αυτόν τον κατάλογο ως διατηρούμενο για χρήση ως δεδομένα από μεταγενέστερη μεταφορά. Ένα σχετικό όνομα επιλύεται μέσα στον κατάλογο προορισμού, που είναι αυτό που θέλετε όταν τα δύο άκρα μπορεί να έχουν διαφορετικές διατάξεις.
rsync -e ssh --partial-dir=.rsync-partial --info=progress2 -- \
large-archive.bin [email protected]:/srv/incoming/
Η σειρά μετράει και στον προορισμό: ο μερικός κατάλογος χρειάζεται αρκετό χώρο για το τμήμα, και ο τόμος χρειάζεται αρκετό χώρο και για το ολοκληρωμένο αρχείο. Το γέμισμα του τόμου-στόχου στη μέση της μεταφοράς παράγει αποτυχία που μοιάζει με πρόβλημα δικτύου αλλά δεν είναι, και μπορεί να αφήσει το διατηρούμενο τμήμα κομμένο. Ελέγξτε τον ελεύθερο χώρο στον υποδοχέα πριν ξεκινήσει η εκτέλεση, όχι αφού αποτύχει. Λίγα δευτερόλεπτα με df -h στην ίδια διαδρομή SSH είναι το φθηνότερο δυνατό τεστ του σχεδίου.
Τα δικαιώματα είναι μικρότερη αλλά πραγματική ανησυχία. Ένας μερικός κατάλογος όπου μπορούν να γράψουν άσχετοι λογαριασμοί επιτρέπει σε κάποιον άλλο να υποκαταστήσει περιεχόμενο που η επόμενη εκτέλεσή σας θα θεωρήσει ήδη ληφθέν. Κρατήστε τον στην κυριότητα του λογαριασμού μεταφοράς και μην τον βάλετε εκεί από όπου δημοσιεύουν άλλες υπηρεσίες.
Εκτελέστε το ίδιο αντίγραφο, όχι ένα εξυπνότερο
Η επαναχρησιμοποίηση ισχύει μόνο όταν η πηγή και ο προορισμός περιγράφουν ακόμη το ίδιο αντικείμενο. Ίδια διαδρομή, ίδιο όνομα, ίδιο αρχείο. Η μετονομασία της πηγής ή η στόχευση σε άλλον κατάλογο προορισμού ξεκινά νέα σύγκριση με τίποτα χρήσιμο.
Μην προσθέσετε --whole-file περιμένοντας τη συμπεριφορά δέλτα. Αυτή η επιλογή λέει στο rsync να αντιγράψει ολόκληρο το αρχείο χωρίς τη σύγκριση κυλιόμενου αθροίσματος ελέγχου, που είναι λογική επιλογή σε γρήγορη τοπική ζεύξη και ακριβώς λάθος μετά από αποτυχημένο ανέβασμα μεγάλης απόστασης. Το --inplace αλλάζει επίσης την ιστορία: γράφει απευθείας στο αρχείο προορισμού, οπότε μια διακοπή αφήνει αρχείο που αναμειγνύει παλιό και νέο περιεχόμενο χωρίς ξεχωριστό τμήμα για εφεδρεία.
Η γραμμή προόδου αναφέρει τη συνολική πρόοδο της μεταφοράς. Δεν είναι σήμα ολοκλήρωσης. Ένας αριθμός που φτάνει το εκατό τοις εκατό ενώ η σύνδεση είναι ακόμη ανοιχτή σημαίνει ότι τα δεδομένα σπρώχτηκαν, όχι ότι ο παραλήπτης μετονόμασε, συγχρόνισε ή δέχτηκε κάτι.
Αποδεχτείτε το αντικείμενο μόνο αφού ταιριάξει
Επιβεβαιώστε πρώτα την κατάσταση εξόδου και μετά συγκρίνετε το αποτέλεσμα αντί να βασίζεστε στην απουσία σφαλμάτων. Ο έλεγχος μεγέθους πιάνει τις περισσότερες κομμένες μεταφορές· η σύγκριση αθροίσματος ελέγχου πιάνει τις υπόλοιπες, και τα δύο είναι φθηνά σε σύγκριση με την επανάληψη του ανεβάσματος.
Αν το αρχείο δημοσιεύεται από διεργασία κατάντη, κάντε αυτή τη διεργασία να περιμένει το αποδεκτό αρχείο. Ένα διατηρούμενο τμήμα που προσγειώνεται σε παρακολουθούμενο κατάλογο με το τελικό όνομα το μαζεύει η επόμενη σάρωση, και το σφάλμα του καταναλωτή θα αφορά κατεστραμμένη είσοδο και όχι μεταφορά που δεν τελείωσε ποτέ.
Αφήστε την πηγή ήσυχη μέχρι να επιβεβαιώσει ο παραλήπτης. Η αναδημιουργία του αρχείου ανάμεσα στις προσπάθειες αλλάζει τη βάση σύγκρισης, και η επόμενη εκτέλεση είτε μεταφέρει σχεδόν τα πάντα είτε παράγει αρχείο που δεν ταιριάζει ούτε με την παλιά ούτε με τη νέα πηγή.
Όταν το όριο είναι η ζεύξη, όχι η σημαία
Το κόστος κεφαλίδας και πρωτοκόλλου είναι ένα κόστος της μεταφοράς, και σπάνια είναι αυτό που καθορίζει πόσο χρόνο παίρνει ένα μεγάλο αρχείο. Η συμπεριφορά επανεκκίνησης μετράει περισσότερο: μια μέθοδος που επιβιώνει από πτώση χωρίς χειροκίνητα βήματα παραδίδει χρησιμοποιήσιμο αρχείο νωρίτερα από μια γρηγορότερη μέθοδο που πρέπει να ξεκινήσει από την αρχή. Ο χώρος αποθήκευσης στα δύο άκρα και η διαδρομή ταυτοποίησης ανήκουν στην ίδια σύγκριση.
Συγκρίνετε τις επιτρεπόμενες εναλλακτικές διαδρομές με το ίδιο αρχείο και τον ίδιο προορισμό, και σημειώστε από πού ξεκινά ξανά η καθεμία μετά από διακοπή. Αυτή η μία στήλη σάς λέει περισσότερα για ένα ανέβασμα δώδεκα γιγαμπάιτ μέσω VPN από οποιονδήποτε ρυθμό αιχμής μετρήθηκε σε σύντομο τεστ.