rsync oor ’n VPN: ’n herpoging wat die gebreekte oordrag hergebruik
’n Tonnel wat val beëindig die verbinding, nie die data nie. Hou die fragment met --partial-dir, hardloop dieselfde kopie weer en verifieer die lêer voordat jy dit publiseer.
Jou oplaai stop by vier gigagrepe van ’n argief van twaalf gigagrepe, en die gewoonte wat by aflaaibestuurders geleer is, sê jy moet op hervat druk. rsync sal nie die TCP-stroom hervat nie, want daardie stroom is weg saam met die tonnel se laaste herversending. Wat dit wel kan doen, is om die grepe wat reeds ontvang is te hou en as basis vir die volgende poging te gebruik — ’n ander meganisme met ’n ander stel reëls. Die vlae wat jy kies, bepaal of daardie hergebruik hoegenaamd plaasvind.
Die herpoging bou toestand op, dit hervat nie die stroom nie
Wanneer die SSH-sessie val, bly daar aan die ander kant net wat dit na skyf geflush het, en niks anders nie. Daar is geen sessietoken om weer aan te heg nie en geen volgnommer om te herspeel nie. Die volgende lopie begin ’n vars verbinding, lees die bron weer en vra die ontvanger wat hy reeds het.
Daardie laaste vraag is hoekom ’n gedeeltelike lêer die moeite werd is om te hou. Die ontvanger se kopie gee rsync iets om teen te vergelyk, en die algoritme stuur net die verskille wat dit kan identifiseer. Dit is steeds ’n nuwe oordrag van metadata en ’n nuwe lopie deur die bron, so die tyd wat gespaar word is eweredig aan hoeveel van die lêer ooreenstem, nie aan hoe ver die vorige verbinding gevorder het nie. As die ontvanger niks behou het nie, is die volgende poging ’n volle kopie, maak nie saak hoeveel gigagrepe die eerste een geskuif het nie.
Bepaal waar die hergebruikbare fragment woon
Die verstekgedrag skryf die gedeeltelike lêer by die bestemming se pad, wat ’n halfgeskrewe argief onder die finale naam sigbaar maak. --partial-dir skuif dit na ’n gids van jou keuse, en die handleiding beskryf daardie gids as behou vir gebruik as data deur ’n latere oordrag. ’n Relatiewe naam word onder die bestemmingsgids opgelos, wat is wat jy wil hê wanneer die twee kante dalk verskillende uitlegte het.
rsync -e ssh --partial-dir=.rsync-partial --info=progress2 -- \
large-archive.bin [email protected]:/srv/incoming/
Orde maak ook by die bestemming saak: die gedeeltelike gids het genoeg ruimte vir die fragment nodig, en die volume het ook genoeg vir die voltooide lêer nodig. Om die teikenvolume midde-in die oordrag vol te maak, lewer ’n fout op wat soos ’n netwerkprobleem lyk maar nie een is nie, en dit kan die behoue fragment afgekap laat. Kontroleer vrye ruimte op die ontvangende gasheer voordat die lopie begin, nie nadat dit misluk nie. ’n Paar sekondes met df -h oor dieselfde SSH-pad is die goedkoopste moontlike toets van die plan.
Regte is ’n kleiner maar werklike bekommernis. ’n Gedeeltelike gids wat deur onverwante rekeninge beskryfbaar is, laat iemand anders inhoud vervang wat jou volgende lopie as reeds ontvang sal beskou. Hou dit in die besit van die oordragrekening, en moenie dit plaas waar ander dienste publiseer nie.
Hardloop dieselfde kopie, nie ’n slimmer een nie
Die hergebruik geld net wanneer die bron en bestemming steeds dieselfde objek beskryf. Dieselfde pad, dieselfde naam, dieselfde lêer. Om die bron te hernoem of na ’n ander bestemmingsgids te wys, begin ’n vars vergelyking teen niks nuttig nie.
Moenie --whole-file byvoeg terwyl jy die deltagdragting verwag nie. Daardie opsie sê vir rsync om die hele lêer te kopieer sonder die rollende-kontrolesom-vergelyking, wat ’n redelike keuse op ’n vinnige plaaslike skakel is en presies die verkeerde een ná ’n mislukte langafstand-oplaai. --inplace verander ook die storie: dit skryf direk in die bestemmingslêer, so ’n onderbreking laat ’n lêer wat ou en nuwe inhoud meng, met geen aparte fragment om op terug te val nie.
Die vorderingslyn rapporteer totale vordering vir die oordrag. Dit is nie ’n voltooiingsein nie. ’n Getal wat eenhonderd persent bereik terwyl die verbinding nog oop is, beteken die data is gestoot, nie dat die ontvanger iets hernoem, gesinkroniseer of aanvaar het nie.
Aanvaar die objek eers nadat dit ooreenstem
Bevestig eers die uitgangstatus, vergelyk dan die resultaat eerder as om op die afwesigheid van foute te vertrou. ’n Groottekontrole vang die meeste afgekapte oordragte; ’n kontrolesomvergelyking vang die res, en beide is goedkoop vergeleke met die oplaai weer te hardloop.
As die argief deur ’n stroomafproses gepubliseer word, laat daardie proses op die aanvaarde lêer wag. ’n Behoue fragment wat onder die finale naam in ’n gemonitorde gids beland, word deur die volgende skandering opgetel, en die verbruiker se fout sal oor korrupte invoer gaan eerder as oor ’n oordrag wat nooit klaargemaak het nie.
Los die bron alleen totdat die ontvanger bevestig. Om die argief tussen pogings te hergenereer verander die vergelykingsbasis, en die volgende lopie dra óf byna alles oor óf lewer ’n lêer wat nóg die ou nóg die nuwe bron pas.
Wanneer die skakel, nie die vlag nie, die beperking is
Opskrif- en protokoloorhoof is een koste van ’n oordrag, en dit is selde die een wat bepaal hoe lank ’n groot lêer neem. Herbegin-gedrag maak meer saak: ’n metode wat ’n val oorleef sonder handmatige stappe, lewer gouer ’n bruikbare lêer as ’n vinniger metode wat weer moet begin. Berging aan beide kante en die verifikasiestap hoort in dieselfde vergelyking.
Vergelyk alternatiewe toegelate paaie met dieselfde lêer en dieselfde bestemming, en let op waar elkeen ná ’n onderbreking herbegin. Daardie enkele kolom vertel jou meer oor ’n oplaai van twaalf gigagrepe oor ’n VPN as enige piekkoers wat op ’n kort toets gemeet is.