Forum Linux.général Reprise de téléchargement distant et crypté ?

Posté par  .
Étiquettes : aucune
0
3
fév.
2005
Alors voila, j'étais parti pour récupérer un fichier à distance via ssh.

Simple me dis-je. Un simple scp fera l'affaire. C'est parti :

scp -C user@machine.com:/home/user/fichier.dat ./


Comme le fichier est gros par rapport à la bande passante, je laisse tourner toute la nuit. Sauf que le réseau sur lequel je suis (et que je ne contrôle pas) n'est pas fiable. Et donc la connexion s'est arrêtée au beau milieu de la nuit, et je me retrouve sur ma machine locale avec uniquement 7% du fichier.

Pas grave, je vais utiliser rsync, histoire que je puisse continuer mon download même en cas de coupure brutale. Et comme je suis un peu parano, on crypte le tout via ssh. Je lis le man, et je n'oublie pas d'utiliser l'option --partial pour qu'il n'efface pas ce qui à été partiellement téléchargé. C'est parti :

rsync -avz --partial --progress -e ssh user@machine.com:/home/user/fichier.dat ./

Et comme la nuit dernière, je laisse tourner.

Forcement, comme je m'y attendais, mon lien avec l'extérieur fut coupé. J'ai donc un fichier (largement) incomplet, mais je me dit qu'en relançant rsync, il va trouver les différences et va continuer le téléchargement là où il s'était arrêté. Grave erreur : rsync s'obstine à re-télécharger le fichier depuis le début. Quel perte de temps et de bande passante !

J'ai une solution un peu bourrin : utiliser des split/cat pour couper le fichier à distance et récupérer les morceaux que je ne possède pas pour les recoller en local.

Mais avant d'en arriver là, il n'existe pas une solution pour reprendre un transfert de fichier à distance et le tout de manière cryptée ?
  • # AMHA

    Posté par  (site web personnel) . Évalué à 1.

    scp et sftp peuvent pas resumer ... mais

    si tu as acces ssh, tu peut segmenter le fichier avec split, et blocs de taille connue, tout ce que tu as a faire, c est continuer le dl au premier bloc cheveauchant avec la ou tu en est actuellement ...

    pour reconstruire, cat block* > file
    apres avoir splitte aussi le block deja DL, afin que sa taille locale corresponde avec la taille des blocks remotes, et que l alignement se fasse sans PB.

    C est chaud a expliquer en 2 lignes a 6h du mat, mais mathematiquement ca marche:

    ton fichiers fait 10. le dl a bloque a 5. tu coupes en blocks de 2 le bout local et le fichier remote.
    le block local 3e est donc enacheve; tu le jette, et tu reprend le dl au bloc distant 3e, jusqu au 5e.
    une fois les 3 manquant ramenes:
    cat block* > file
    • [^] # Re: AMHA

      Posté par  . Évalué à 1.

      Oui, tu as bien compris mon problème, à savoir "résumer" avec openssh.

      Ta solution à base de tronçonneuse split / cat est valable et je pense qu'elle devrait fonctionner sans trop de soucis. Mais je la trouve un peu lourde pour un problème qui n'est pas rare je pense.

      Et puis relis mon post...
      J'ai une solution un peu bourrin : utiliser des split/cat pour couper le fichier à distance et récupérer les morceaux que je ne possède pas pour les recoller en local.

      Comme tu peux le voir j'avais envisagé de faire ce que tu me suggère, mais en dernier recours ! :)

      Merci !
  • # rsync over ssh

    Posté par  (site web personnel) . Évalué à 3.

    rsync -ave ssh
    • [^] # Re: rsync over ssh

      Posté par  . Évalué à 1.

      Oui ! C'est ce que j'ai fait. Mais bizarrement rsync ne complète pas le fichier partiellement téléchargé.

      Peut-être que rsync doit estimer que les différences sont trop nombreuses (fichier "mutilé") pour se contenter de rapatrier seulement les parties manquantes...
  • # ssh + http ou https

    Posté par  . Évalué à 1.

    j'utilise wget avec les options -bc dans un tunnel ssh ouvert entre
    les 2 machines.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.