Vaše slanje se zaustavlja na četiri gigabajta arhive od dvanaest gigabajta, a navika naučena od menadžera za preuzimanje kaže da pritisnete nastavi. rsync neće nastaviti TCP tok, jer je taj tok otišao s posljednjim ponovnim prijenosom tunela. Ono što može jest zadržati bajtove koje je već primio i upotrijebiti ih kao osnovu za sljedeći pokušaj, što je drugi mehanizam s drugim skupom pravila. Zastavice koje odaberete odlučuju hoće li se to ponovno korištenje uopće dogoditi.

Ponovni pokušaj obnavlja stanje, ne nastavlja tok

Kad SSH sesija padne, na udaljenoj strani ostaje samo ono što je uspjela isprati na disk i ništa drugo. Nema tokena sesije za ponovno pripajanje ni rednog broja za reprodukciju. Sljedeće pokretanje otvara novu vezu, ponovo čita izvor i pita primatelja što već ima.

To posljednje pitanje objašnjava zašto se djelomična datoteka isplati čuvati. Primateljeva kopija daje rsync-u nešto za usporedbu, a algoritam šalje samo razlike koje može prepoznati. To je ipak nov prijenos metapodataka i nov prolaz kroz izvor, pa je ušteđeno vrijeme razmjerno tome koliko se datoteke podudara, a ne tome dokle je prethodna veza stigla. Ako primatelj ništa nije zadržao, sljedeći pokušaj je puna kopija, bez obzira na to koliko je gigabajta prvi prenio.

Odlučite gdje živi dio koji se može ponovno upotrijebiti

Zadano ponašanje zapisuje djelomičnu datoteku na odredišnu putanju, što napola zapisanu arhivu čini vidljivom pod konačnim imenom. --partial-dir je premješta u direktorij po vašem izboru, a priručnik taj direktorij opisuje kao zadržan za korištenje kao podatke u kasnijem prijenosu. Relativno ime razrješava se unutar odredišnog direktorija, što je upravo ono što želite kad dvije strane mogu imati različite rasporede.

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

Redoslijed je važan i na odredištu: djelomičnom direktoriju treba dovoljno mjesta za dio, a volumenu dovoljno i za dovršenu datoteku. Punjenje ciljnog volumena nasred prijenosa daje kvar koji izgleda kao mrežni problem ali nije, i može ostaviti zadržani dio odsječenim. Provjerite slobodan prostor na prijamnom hostu prije početka pokretanja, a ne nakon što padne. Nekoliko sekundi s df -h preko iste SSH putanje najjeftiniji je mogući test plana.

Dozvole su manja ali stvarna briga. Djelomični direktorij u koji mogu pisati nepovezani računi dopušta nekome drugome da zamijeni sadržaj koji će vaše sljedeće pokretanje tretirati kao već primljen. Držite ga u vlasništvu računa za prijenos i ne stavljajte ga tamo odakle objavljuju druge usluge.

Pokrenite istu kopiju, ne pametniju

Ponovno korištenje vrijedi samo kad izvor i odredište još opisuju isti objekt. Ista putanja, isto ime, ista datoteka. Preimenovanje izvora ili pokazivanje na drugi odredišni direktorij započinje novu usporedbu s ničim korisnim.

Ne dodajte --whole-file dok očekujete delta ponašanje. Ta opcija kaže rsync-u da kopira cijelu datoteku bez usporedbe klizećeg kontrolnog zbroja, što je razuman izbor na brzoj lokalnoj vezi i točno pogrešan nakon neuspjelog dugoprugaškog slanja. --inplace također mijenja priču: piše izravno u odredišnu datoteku, pa prekid ostavlja datoteku koja miješa staro i novo bez zasebnog dijela na koji bi se oslonili.

Linija napretka izvještava ukupni napredak prijenosa. To nije signal dovršetka. Broj koji dosegne sto posto dok je veza još otvorena znači da su podaci poslani, a ne da je primatelj nešto preimenovao, sinkronizirao ili prihvatio.

Prihvatite objekt tek nakon što se podudari

Najprije potvrdite izlazni status, zatim usporedite rezultat umjesto da se pouzdate u odsutnost pogrešaka. Provjera veličine hvata većinu odsječenih prijenosa; usporedba kontrolnog zbroja hvata ostalo, a oboje je jeftino u usporedbi s ponovnim pokretanjem slanja.

Ako arhivu objavljuje nizvodni proces, natjerajte taj proces da čeka prihvaćenu datoteku. Zadržani dio koji pod konačnim imenom završi u nadziranom direktoriju pokupi sljedeće skeniranje, a korisnikova će se pogreška odnositi na oštećeni ulaz, a ne na prijenos koji nikad nije završio.

Ne dirajte izvor dok primatelj ne potvrdi. Ponovno generiranje arhive između pokušaja mijenja osnovu usporedbe, a sljedeće pokretanje ili prenese gotovo sve ili proizvede datoteku koja ne odgovara ni starom ni novom izvoru.

Kad je veza, a ne zastavica, granica

Trošak zaglavlja i protokola jedan je trošak prijenosa i rijetko je onaj koji odlučuje koliko dugo traje velika datoteka. Ponašanje pri ponovnom pokretanju važnije je: metoda koja preživi prekid bez ručnih koraka daje upotrebljivu datoteku prije nego brža metoda koja mora početi iznova. Pohrana na oba kraja i putanja autentikacije pripadaju istoj usporedbi.

Usporedite dopuštene alternativne putanje s istom datotekom i istim odredištem i zabilježite odakle se svaka nastavlja nakon prekida. Taj jedan stupac govori vam o slanju dvanaest gigabajta preko VPN-a više nego bilo koja vršna brzina izmjerena u kratkom testu.

Povezani članci