rsync tra VPN: reprovo kiu reuzas la rompitan transdonon
Falinta tunelo finas la konekton, ne la datumojn. Konservu la fragmenton per --partial-dir, rerulu la saman kopion kaj kontrolu la dosieron antaŭ ol publikigi ĝin.
Via alŝuto haltas ĉe kvar gigabajtoj de dekdu-gigabajta arkivo, kaj la kutimo lernita de elŝut-administriloj diras premi daŭrigon. rsync ne daŭrigos la TCP-fluon, ĉar tiu fluo foriris kun la lasta retranssendo de la tunelo. Kion ĝi povas fari, estas konservi la bajtojn kiujn ĝi jam ricevis kaj uzi ilin kiel bazon por la sekva provo, kio estas alia mekanismo kun alia aro da reguloj. La flagoj kiujn vi elektas decidas ĉu tiu reuzo entute okazos.
La reprovo rekonstruas staton, ĝi ne daŭrigas la fluon
Kiam la SSH-sesio falas, ĉe la malproksima fino restas nur tio, kion ĝi sukcesis skribi al disko, kaj nenio alia. Ne estas sesia ĵetono al kiu realiĝi nek sinsekva numero por reludi. La sekva rulado malfermas novan konekton, relegas la fonton kaj demandas la ricevanton kion ĝi jam havas.
Ĝuste tiu lasta demando klarigas kial parta dosiero indas esti konservata. La kopio de la ricevanto donas al rsync ion por kompari, kaj la algoritmo sendas nur la diferencojn kiujn ĝi povas identigi. Ĝi estas ankoraŭ nova transdono de metadatumoj kaj nova trairo de la fonto, do la ŝparita tempo proporcias al kiom de la dosiero kongruas, ne al kiom malproksimen la antaŭa konekto progresis. Se la ricevanto konservis nenion, la sekva provo estas plena kopio, kiom ajn da gigabajtoj la unua movis.
Decidu kie loĝas la reuzebla fragmento
La defaŭlta konduto skribas la partan dosieron ĉe la celloko, kio igas duone skribitan arkivon videbla sub la fina nomo. --partial-dir movas ĝin en dosierujon laŭ via elekto, kaj la manlibro priskribas tiun dosierujon kiel konservatan por uzo kiel datumoj de posta transdono. Relativa nomo estas solvita sub la cel-dosierujo, kio estas ĝuste tio, kion vi volas kiam la du finoj povas havi malsamajn aranĝojn.
rsync -e ssh --partial-dir=.rsync-partial --info=progress2 -- \
large-archive.bin [email protected]:/srv/incoming/
Ankaŭ ĉe la celo la ordo gravas: la parta dosierujo bezonas sufiĉe da spaco por la fragmento, kaj la volumo bezonas sufiĉe ankaŭ por la finita dosiero. Plenigi la celvolumon meze de la transdono produktas malsukceson kiu aspektas kiel retproblemo sed ne estas, kaj povas lasi la konservitan fragmenton detranĉita. Kontrolu liberan spacon ĉe la riceva gastiganto antaŭ ol la rulado komenciĝas, ne post kiam ĝi malsukcesas. Kelkaj sekundoj kun df -h tra la sama SSH-vojo estas la plej malmultekosta ebla testo de la plano.
Permesoj estas pli malgranda sed reala zorgo. Parta dosierujo skribebla de nerrilataj kontoj permesas al iu alia anstataŭigi enhavon, kiun via sekva rulado traktos kiel jam ricevitan. Tenu ĝin en posedo de la transdona konto, kaj ne metu ĝin tie, de kie aliaj servoj publikigas.
Rulu la saman kopion, ne pli lertan
La reuzo validas nur kiam la fonto kaj la celo ankoraŭ priskribas la saman objekton. Sama vojo, sama nomo, sama dosiero. Renomi la fonton aŭ montri al alia cel-dosierujo komencas novan komparon kontraŭ nenio utila.
Ne aldonu --whole-file dum vi atendas la deltan konduton. Tiu opcio diras al rsync kopii la tutan dosieron sen la komparo de ruliĝanta kontrolsumo, kio estas racia elekto sur rapida loka ligo kaj precize la malĝusta post malsukcesa longdistanca alŝuto. --inplace ankaŭ ŝanĝas la historion: ĝi skribas rekte en la celan dosieron, do interrompo lasas dosieron kiu miksa malnovan kaj novan enhavon sen aparta fragmento por fali reen.
La progreslinio raportas suman progreson de la transdono. Ĝi ne estas kompletiga signalo. Numero kiu atingas cent procentojn dum la konekto ankoraŭ estas malfermita signifas ke la datumoj estis puŝitaj, ne ke la ricevanto renomis, sinkronigis aŭ akceptis ion.
Akceptu la objekton nur post kiam ĝi kongruas
Unue konfirmu la elirstaton, poste komparu la rezulton anstataŭ fidi la foreston de eraroj. Grandokontrolo kaptas la plej multajn detranĉitajn transdonojn; kontrolsuma komparo kaptas la reston, kaj ambaŭ estas malmultekostaj kompare kun relegi la alŝuton.
Se la arkivon publikigas posta procezo, igi tiun procezon atendi la akceptitan dosieron. Konservita fragmento kiu surteriĝas en observatan dosierujon sub la fina nomo estas kaptata de la sekva skano, kaj la eraro de la konsumanto temas pri korupta enigo, ne pri transdono kiu neniam finiĝis.
Lasu la fonton trankvila ĝis la ricevanto konfirmos. Regeneri la arkivon inter provoj ŝanĝas la komparbazon, kaj la sekva rulado aŭ transdonas preskaŭ ĉion aŭ produktas dosieron kiu kongruas nek kun la malnova nek kun la nova fonto.
Kiam la ligo, ne la flago, estas la limo
Kaplinio- kaj protokola superkosto estas unu kosto de transdono, kaj ĝi malofte estas tiu kiu decidas kiom longe granda dosiero daŭras. Restart-konduto pli gravas: metodo kiu postvivas falon sen permanaj paŝoj liveras uzeblan dosieron pli frue ol pli rapida metodo kiu devas rekomenci. Stokado ĉe ambaŭ finoj kaj la aŭtentigo-vojo apartenas al la sama komparo.
Komparu la permesitajn alternativajn vojojn kun la sama dosiero kaj la sama celo, kaj notu de kie ĉiu restartiĝas post interrompo. Tiu unu kolumno diras al vi pli pri dekdu-gigabajta alŝuto tra VPN ol iu ajn pinta rapido mezurita en mallonga testo.