rsync cez VPN: opakovaný pokus, ktorý znovu použije prerušený prenos
Prerušený tunel ukončí spojenie, nie dáta. Ponechajte fragment s --partial-dir, spustite znova tú istú kópiu a pred zverejnením súbor overte.
Vaše nahrávanie sa zasekne na štyroch gigabajtoch dvanásťgigabajtového archívu a návyk naučený od správcov sťahovania hovorí stlačiť pokračovať. rsync neobnoví TCP prúd, pretože ten prúd zmizol s posledným prenosom tunela. Čo dokáže, je ponechať už prijaté bajty a použiť ich ako základ pre ďalší pokus, čo je iný mechanizmus s inou sadou pravidiel. Prepínače, ktoré zvolíte, rozhodujú, či k tomuto opätovnému použitiu vôbec dôjde.
Opakovaný pokus obnovuje stav, nie prúd
Keď SSH relácia spadne, na vzdialenej strane zostane len to, čo sa stihlo zapísať na disk, a nič iné. Neexistuje token relácie, ku ktorému by sa dalo pripojiť, ani poradové číslo na prehratie. Ďalší beh otvorí nové spojenie, znova prečíta zdroj a spýta sa príjemcu, čo už má.
Práve táto posledná otázka vysvetľuje, prečo sa vyplatí čiastočný súbor uchovať. Kópia u príjemcu dáva rsyncu niečo na porovnanie a algoritmus posiela len tie rozdiely, ktoré dokáže určiť. Stále je to nový prenos metadát a nový prechod zdrojom, takže ušetrený čas je úmerný tomu, aká veľká časť súboru sedí, nie tomu, kam až sa dostalo predchádzajúce spojenie. Ak príjemca nič neuchoval, ďalší pokus je plná kópia, bez ohľadu na to, koľko gigabajtov ten prvý preniesol.
Rozhodnite, kde bude znovupoužiteľný fragment bývať
Predvolené správanie zapisuje čiastočný súbor na cieľovú cestu, čo robí napoly zapísaný archív viditeľným pod konečným názvom. --partial-dir ho presunie do adresára podľa vášho výberu a manuál tento adresár opisuje ako uchovávaný na použitie ako dáta neskorším prenosom. Relatívny názov sa vyhodnocuje v cieľovom adresári, čo je presne to, čo chcete, keď obe strany môžu mať rôzne usporiadanie.
rsync -e ssh --partial-dir=.rsync-partial --info=progress2 -- \
large-archive.bin [email protected]:/srv/incoming/
Na cieli záleží aj na poradí: čiastočný adresár potrebuje dosť miesta na fragment a zväzok potrebuje dosť aj na dokončený súbor. Zaplnenie cieľového zväzku uprostred prenosu vyvolá zlyhanie, ktoré vyzerá ako sieťový problém, ale nie je, a môže ponechať uchovaný fragment skrátený. Skontrolujte voľné miesto na prijímajúcom hostiteľovi pred začiatkom behu, nie po tom, čo zlyhá. Niekoľko sekúnd s df -h po tej istej SSH ceste je najlacnejší možný test plánu.
Oprávnenia sú menšia, ale skutočná starosť. Čiastočný adresár zapisovateľný nesúvisiacimi účtami umožní niekomu inému nahradiť obsah, ktorý váš ďalší beh bude považovať za už prijatý. Držte ho vo vlastníctve prenosového účtu a neumiestňujte ho tam, odkiaľ publikujú iné služby.
Spustite tú istú kópiu, nie chytrejšiu
Opätovné použitie platí len vtedy, keď zdroj a cieľ stále opisujú ten istý objekt. Tá istá cesta, ten istý názov, ten istý súbor. Premenovanie zdroja alebo ukázanie na iný cieľový adresár začína nové porovnanie s ničím užitočným.
Nepridávajte --whole-file, keď očakávate delta správanie. Táto voľba hovorí rsyncu kopírovať celý súbor bez porovnania kĺzavého kontrolného súčtu, čo je rozumná voľba na rýchlom lokálnom spojení a presne nesprávna po neúspešnom nahraní na veľkú vzdialenosť. --inplace tiež mení príbeh: zapisuje priamo do cieľového súboru, takže prerušenie nechá súbor miešajúci starý a nový obsah bez samostatného fragmentu, na ktorý sa dá vrátiť.
Riadok priebehu hlási súhrnný priebeh prenosu. Nie je to signál dokončenia. Číslo, ktoré dosiahne sto percent, kým je spojenie ešte otvorené, znamená, že dáta boli odoslané, nie že príjemca niečo premenoval, synchronizoval alebo prijal.
Prijmite objekt až po tom, čo sa zhoduje
Najprv potvrďte návratový stav, potom porovnajte výsledok, namiesto toho, aby ste verili neprítomnosti chýb. Kontrola veľkosti zachytí väčšinu skrátených prenosov; porovnanie kontrolných súčtov zachytí zvyšok a oboje je lacné v porovnaní s opätovným spustením nahrávania.
Ak archív publikuje nadväzný proces, prinúťte ten proces čakať na prijatý súbor. Uchovaný fragment, ktorý pod konečným názvom pristane v sledovanom adresári, zoberie ďalší sken a chyba spotrebiteľa bude o poškodenom vstupe, nie o prenose, ktorý sa nikdy neskončil.
Nesiahajte na zdroj, kým príjemca nepotvrdí. Obnovenie archívu medzi pokusmi mení základ porovnania a ďalší beh buď prenesie takmer všetko, alebo vytvorí súbor, ktorý nezodpovedá ani starému, ani novému zdroju.
Keď je limitom spoj, nie prepínač
Réžia hlavičky a protokolu je jedna cena prenosu a málokedy je tou, ktorá rozhoduje, ako dlho veľký súbor trvá. Správanie pri reštarte je dôležitejšie: metóda, ktorá prežije výpadok bez ručných krokov, dodá použiteľný súbor skôr než rýchlejšia metóda, ktorá musí začať znova. Úložisko na oboch stranách a cesta autentizácie patria do toho istého porovnania.
Porovnajte povolené alternatívne cesty s tým istým súborom a tým istým cieľom a poznačte, odkiaľ sa každá po prerušení obnovuje. Ten jediný stĺpec vám o dvanásťgigabajtovom nahrávaní cez VPN povie viac než akákoľvek špičková rýchlosť zmeraná v krátkom teste.