Forum général.général SSH et transfert de fichier interrompu

Posté par  .
Étiquettes : aucune
0
19
mar.
2010
Bonjour, je dois transférer un gros fichiers (plusieurs gios) entre un serveur et un ordinateur sur une connexion orange. J'utilise ssh et sftp car je n'ai pas envi d'installer un serveur http pour ça.

Évidemment, ça a coupé, et je me demandais comment faire pour que le prochaine fois que ça coupe, je ne recommence pas à tout transférer à partir de 0 (statistiquement, j'estime les chance que le fichier passe entièrement sans que ça coupe à 10%).

Une solution temporaire serais de faire un gros split du fichier, pour ensuite lancer une vingtaine de fois un rsync, mais je suis certain qu'il y a beaucoup plus propre.
  • # sshfs et mc

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

    Pour les transferts de fichiers sécurisés, j'utilise sshfs, sur le serveur il suffit d'avoir le service ssh à l'écoute, du coté client il faut penser à rajouter l'utilisateur dans le groupe fuse, sinon il n'aura pas les droits suffisant pour monter le dossier distant.

    sshfs utilise sftp, donc je ne suis pas certain que ça règle le problème

    par contre j'utilise aussi Midnight Commander (mc) qui est capable de reprendre un transfert interrompu (que ce soit directement avec sftp, ou par fuse).

    par exemple:

    sshfs -p 22 yellowiscool@yellowserver:/home/yellow /home/yellow/dossier


    le -p 22 est optionnel, par défaut c'est 22, mais je suppose que tu utilise un port différent de 22 pour ne pas te faire pourrir tes log par toutes les nombreuses tentatives d'accès à ton server par des inconnus

    Si tu utilise une distribution GNU/Linux Debian tu pourra installer sshfs et mc par la commande suivante en tant que root:

    aptitude install sshfs mc


    Pour les autres distributions, ça ne doit pas être bien différent.
    • [^] # Re: sshfs et mc

      Posté par  . Évalué à 2.

      Ah oui, je n'ai pas pensé à utiliser sshfs pour transférer un seul fichier. C'est un poil bourrin, mais si on peut utiliser des outils mieux faits à cotés, pourquoi pas.

      Envoyé depuis mon lapin.

  • # rsync

    Posté par  . Évalué à 2.

    rsync --partial --rsh=ssh SOURCE user@dest:/path/to/
    • [^] # Re: rsync

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

      --rsh=ssh est le défaut depuis la 2.6.0, sortie il y a un peu plus de 6 ans :)
      • [^] # Re: rsync

        Posté par  . Évalué à 2.

        ce qui donne donc :
        rsync -a --progress SOURCE user@destination:/path/to/backup
  • # lftp

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

    lftp prétend (je n'ai pas la "chance" d'être sur des réseaux où les transfers de fichiers s'arrêtent au milieu) reprendre automatiquement les transferts interrompus. Donc :

    % lftp sftp://yellow@yellowserver
    lftp:~> get mon-gros-fichier
    • [^] # Re: lftp

      Posté par  . Évalué à 1.

      lftp sftp://yellow@yellowserver

      Je ne savais pas qu’il supportait le sftp, c’est bon à savoir.
      D’après un petit tour dans le man, il supporte aussi http (je l’ai déjà utilisé ; c’est quand même plus efficace qu’un navigateur pour télécharger l’ISO d’une distribution depuis un miroir http) et https, fish…

      (je n'ai pas la "chance" d'être sur des réseaux où les transfers de fichiers s'arrêtent au milieu)

      S’il s’agit d’interrompre volontairement un transfert, il y a toujours moyen (Control-C si ça marche, arrêter l’application, débrancher le réseau…).

      get mon-gros-fichier

      Pour la première tentative, oui, mais ensuite reget pour reprendre le transfert (sinon, il renomme l’ancien fichier et recommence à 0).

      « Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone

      • [^] # Re: lftp

        Posté par  . Évalué à 1.

        Salut,

        Juste pour préciser... effectivement je pense que l'utilisation de lftp est le plus simple.

        user@local:~$ lftp sftp://user@site-distant:/home/user/www
        Password:
        cd ok, cwd=/home/user/www
        lftp user@site-distant:~/www> exit

        Utiliser get -c /chemin/vers/fichier pour reprendre le téléchargement. Ne pas oublier l'option -c (continue).

        Si le serveur SSH distant écoute sur un port non standard, faire :

        user@local:~$ lftp sftp://user@site-distant:port:/home/user/www
        ...
        • [^] # Re: lftp

          Posté par  . Évalué à 2.

          en quoi est-ce plus simple que
          rsync -a SOURCE DESTINATION

          avec SOURCE (et DESTINATION) pouvant etre un fichier local, un dossier, un serveur ssh (user@server:/chemin/dossier)
          • [^] # Re: lftp

            Posté par  . Évalué à 1.

            Pour une simple copie de fichier ça semble quand même un peu plus "naturel" d'utiliser un simple client (s)ftp, non ?

Suivre le flux des commentaires

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