La teva pujada s’atura als quatre gigaoctets d’un arxiu de dotze gigaoctets, i l’hàbit après dels gestors de descàrregues diu que premis reprèn. rsync no reprendrà el flux TCP, perquè aquest flux ha desaparegut amb l’última retransmissió del túnel. El que sí que pot fer és conservar els octets que ja ha rebut i fer-los servir de base per al proper intent, que és un mecanisme diferent amb un conjunt de regles diferent. Les opcions que trieu decideixen si aquesta reutilització arriba a passar.

El reintent reconstrueix l’estat, no reprèn el flux

Quan la sessió SSH cau, a l’extrem remot només hi queda el que ha abocat al disc i res més. No hi ha cap testimoni de sessió a què tornar-se a enganxar ni cap número de seqüència per reproduir. L’execució següent obre una connexió nova, torna a llegir l’origen i pregunta al receptor què té ja.

Aquesta darrera pregunta és la raó per la qual val la pena conservar un fitxer parcial. La còpia del receptor dona a rsync una cosa amb què comparar, i l’algorisme només envia les diferències que pot identificar. És encara un transport nou de metadades i una passada nova per l’origen, així que el temps estalviat és proporcional a quant del fitxer coincideix, no a fins on havia arribat la connexió anterior. Si el receptor no ha conservat res, el proper intent és una còpia completa, per molts gigaoctets que n’hagi mogut el primer.

Decidiu on viu el fragment reutilitzable

El comportament per defecte escriu el fitxer parcial al camí de destinació, cosa que fa visible un arxiu mig escrit sota el nom final. --partial-dir el mou a un directori que trieu, i el manual descriu aquest directori com a conservat perquè un transport posterior l’usi com a dades. Un nom relatiu es resol dins del directori de destinació, que és el que voleu quan els dos extrems poden tenir disposicions diferents.

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

L’ordre també importa a la destinació: el directori parcial necessita prou espai per al fragment, i el volum necessita prou espai també per al fitxer complet. Omplir el volum de destinació a mig transport produeix una fallada que sembla un problema de xarxa i no ho és, i pot deixar el fragment conservat truncat. Comproveu l’espai lliure a l’amfitrió receptor abans que comenci l’execució, no després que falli. Uns quants segons amb df -h pel mateix camí SSH és la prova més barata possible del pla.

Els permisos són una preocupació més petita però real. Un directori parcial on poden escriure comptes no relacionats permet que algú altre substitueixi contingut que la vostra propera execució tractarà com a ja rebut. Mantingueu-lo en propietat del compte de transport i no el poseu on publiquin altres serveis.

Executeu la mateixa còpia, no una de més enginyosa

La reutilització només s’aplica quan l’origen i la destinació encara descriuen el mateix objecte. Mateix camí, mateix nom, mateix fitxer. Reanomenar l’origen o apuntar a un directori de destinació diferent comença una comparació nova contra res d’útil.

No afegiu --whole-file tot esperant el comportament delta. Aquesta opció diu a rsync que copiï el fitxer sencer sense la comparació de suma de verificació lliscant, cosa que és una tria raonable en un enllaç local ràpid i exactament la equivocada després d’una pujada de llarga distància fallida. --inplace també canvia la història: escriu directament al fitxer de destinació, de manera que una interrupció deixa un fitxer que barreja contingut vell i nou sense cap fragment separat on recular.

La línia de progrés informa del progrés agregat del transport. No és un senyal de compleció. Un número que arriba al cent per cent mentre la connexió encara és oberta vol dir que les dades s’han empès, no que el receptor hagi reanomenat, sincronitzat o acceptat res.

Accepteu l’objecte només quan coincideixi

Confirmeu primer l’estat de sortida i després compareu el resultat en lloc de confiar en l’absència d’errors. Una comprovació de mida atrapa la majoria de transports truncats; una comparació de sumes de verificació atrapa la resta, i totes dues són barates comparades amb tornar a executar la pujada.

Si un procés posterior publica l’arxiu, feu que aquest procés esperi el fitxer acceptat. Un fragment conservat que cau en un directori vigilat sota el nom final el recull la propera exploració, i l’error del consumidor serà sobre entrada corrupta i no sobre un transport que mai no va acabar.

No toqueu l’origen fins que el destinatari confirmi. Regenerar l’arxiu entre intents canvia la base de comparació, i l’execució següent o bé transporta gairebé tot o bé produeix un fitxer que no coincideix ni amb l’origen vell ni amb el nou.

Quan el límit és l’enllaç, no l’opció

La sobrecàrrega de capçalera i protocol és un cost del transport, i poques vegades és la que decideix quant triga un fitxer gran. El comportament de reinici importa més: un mètode que sobreviu a una caiguda sense passos manuals lliura un fitxer utilitzable abans que un mètode més ràpid que ha de començar de nou. L’emmagatzematge als dos extrems i el camí d’autenticació pertanyen a la mateixa comparació.

Compareu els camins alternatius permesos amb el mateix fitxer i la mateixa destinació, i anoteu des d’on reprèn cadascun després d’una interrupció. Aquesta sola columna us diu més sobre una pujada de dotze gigaoctets per VPN que qualsevol velocitat punta mesurada en una prova curta.

Articles relacionats