Vaše nalaganje se ustavi pri štirih gigabajtih dvanajstgigabajtnega arhiva, in navada, naučena pri upraviteljih prenosov, pravi, da pritisnete nadaljuj. rsync ne bo nadaljeval toka TCP, ker je ta tok izginil z zadnjim ponovnim prenosom tunela. Kar lahko stori, je, da obdrži že prejete bajte in jih uporabi kot osnovo za naslednji poskus, kar je drug mehanizem z drugim naborom pravil. Zastavice, ki jih izberete, odločajo, ali do te ponovne uporabe sploh pride.

Novi poskus obnovi stanje, ne nadaljuje toka

Ko seja SSH pade, na oddaljenem koncu ostane le tisto, kar je uspelo zapisati na disk, in nič drugega. Ni žetona seje, na katerega bi se lahko znova pripeli, in ni zaporedne številke za predvajanje. Naslednji zagon odpre novo povezavo, znova prebere vir in vpraša prejemnika, kaj že ima.

Prav to zadnje vprašanje pojasnjuje, zakaj se delno datoteko splača obdržati. Prejemnikova kopija daje rsyncu nekaj za primerjavo, algoritem pa pošlje le tiste razlike, ki jih lahko prepozna. To je še vedno nov prenos metapodatkov in nov prehod po viru, zato je prihranjeni čas sorazmeren temu, koliko datoteke se ujema, ne pa temu, kako daleč je prišla prejšnja povezava. Če prejemnik ni obdržal ničesar, je naslednji poskus polna kopija, ne glede na to, koliko gigabajtov jih je prvi premaknil.

Odločite, kje živi del, ki ga je mogoče znova uporabiti

Privzeto vedenje zapiše delno datoteko na ciljno pot, zaradi česar je na pol zapisan arhiv viden pod končnim imenom. --partial-dir jo premakne v imenik po vaši izbiri, in priročnik ta imenik opisuje kot obdržan za uporabo kot podatke pri poznejšem prenosu. Relativno ime se razreši znotraj ciljnega imenika, kar je natanko to, kar želite, ko imata oba konca lahko različno postavitev.

rsync -e ssh --partial-dir=.rsync-partial --info=progress2 -- \
  large-archive.bin [email protected]:/srv/incoming/

Tudi na cilju je vrstni red pomemben: delni imenik potrebuje dovolj prostora za del, nosilec pa dovolj prostora tudi za dokončano datoteko. Polnjenje ciljnega nosilca na sredi prenosa povzroči napako, ki je videti kot omrežna težava, pa ni, in lahko pusti obdržani del odrezan. Preverite prosti prostor na sprejemnem gostitelju pred začetkom zagona, ne po tem, ko spodleti. Nekaj sekund z df -h po isti poti SSH je najcenejši možni preizkus načrta.

Dovoljenja so manjša, a resnična skrb. Delni imenik, v katerega lahko pišejo nepovezani računi, omogoča nekomu drugemu, da zamenja vsebino, ki jo bo vaš naslednji zagon obravnaval kot že prejeto. Imate ga v lasti računa za prenos in ga ne postavljajte tja, od koder objavljajo druge storitve.

Zaženite isto kopijo, ne pametnejše

Ponovna uporaba velja le, ko vir in cilj še vedno opisujeta isti objekt. Ista pot, isto ime, ista datoteka. Preimenovanje vira ali usmeritev na drug ciljni imenik začne novo primerjavo z ničemer koristnim.

Ne dodajajte --whole-file, ko pričakujete delta vedenje. Ta možnost reče rsyncu, naj kopira celo datoteko brez primerjave drseče kontrolne vsote, kar je razumna izbira na hitri lokalni povezavi in natanko napačna po neuspelem nalaganju na dolgo razdaljo. --inplace prav tako spremeni zgodbo: piše neposredno v ciljno datoteko, zato prekinitev pusti datoteko, ki meša staro in novo vsebino, brez ločenega dela, na katerega bi se lahko oprli.

Vrstica napredka poroča skupni napredek prenosa. To ni signal dokončanja. Število, ki doseže sto odstotkov, medtem ko je povezava še odprta, pomeni, da so podatki potisnjeni, ne pa, da je prejemnik kaj preimenoval, sinhroniziral ali sprejel.

Objekt sprejmite šele, ko se ujema

Najprej potrdite izhodni status, nato primerjajte rezultat, namesto da bi zaupali odsotnosti napak. Preverjanje velikosti ujame večino odrezanih prenosov; primerjava kontrolnih vsot ujame preostale, in oboje je poceni v primerjavi s ponovnim zagonom nalaganja.

Če arhiv objavi nadaljnji proces, naj ta proces počaka na sprejeto datoteko. Obdržani del, ki pod končnim imenom pristane v nadzorovanem imeniku, pobere naslednje skeniranje, in napaka uporabnika bo o poškodovanem vhodu, ne o prenosu, ki se nikoli ni končal.

Pustite vir pri miru, dokler prejemnik ne potrdi. Ponovno ustvarjanje arhiva med poskusi spremeni osnovo primerjave, in naslednji zagon bodisi prenese skoraj vse bodisi ustvari datoteko, ki se ne ujema ne s starim ne z novim virom.

Ko je meja povezava, ne zastavica

Stroški glave in protokola so en strošek prenosa in redko so tisti, ki odločijo, koliko časa vzame velika datoteka. Vedenje pri ponovnem zagonu šteje več: metoda, ki preživi prekinitev brez ročnih korakov, dostavi uporabno datoteko prej kot hitrejša metoda, ki mora začeti znova. Shramba na obeh koncih in pot overjanja sodita v isto primerjavo.

Primerjajte dovoljene alternativne poti z isto datoteko in istim ciljem ter zapišite, od kod se vsaka po prekinitvi obnovi. Tisti en stolpec vam o nalaganju dvanajstih gigabajtov prek VPN pove več kot katera koli najvišja hitrost, izmerjena v kratkem preskusu.

Sorodni članki