Reprendre le transfert récursif de scp (avec rsync?)


14

Je transférais plusieurs milliers de fichiers chacun ~ 1 Mo via scp et ma connexion était rompue après les premiers 2k fichiers. Je voulais savoir s'il y avait un moyen de reprendre le transfert récursif sans recommencer. Quelque chose comme

$ scp -r me@host.com:/datafiles/ ./
... Happy Transfer ...
...     BREAK!     ...
$ rsync -P me@host.com:/datafiles/ ./
... Continue transf...

Le problème est que je n'arrive pas à obtenir la syntaxe correcte si c'est possible. Quelqu'un peut-il nous expliquer si / comment cela peut être fait?

PS. Si vous spécifiez la barre oblique après "fichiers de données" dans la ligne rsync, cela transfère-t-il le répertoire ou son contenu? J'ai vu des commentaires contradictoires lorsque j'ai googlé.

Réponses:


10

si vous effectuez une synchronisation entre une machine locale et un hôte distant, cela fonctionnerait:

rsync -avzl -e ssh /directory/with/files/ you@host.com:/new/directory/

Merci. Je ne pensais pas que cela fonctionnait, car cela commencerait à répertorier tous mes fichiers, mais je ne savais pas qu'il montrait le «transfert de fichiers», ce qui signifie simplement que le fichier était à jour. Si mon transfert avait été interrompu, il a été repris avec de vrais transferts (plus lents).
physicsmichael

Hmm, pour moi ssh -i akey.pemc'est nécessaire et je ne peux pas faire fonctionner la -ipièce avec ces commandes.
isomorphismes

2
Si vous essayez de reprendre un gros fichier, cette option peut être utile: --partial --inplace --no-whole-file.
Rafael Xavier

@kibitzer - une fois qu'il vous a montré le fichier (sur le serveur distant), comment avez-vous recommencé le transfert? Le mien vient de créer le fichier de liste et me montre le fichier et combien a été téléchargé. Mais il se bloque simplement sans option pour continuer ou faire progresser la sortie. Le transfert a-t-il recommencé ou dois-je faire quelque chose pour le démarrer?
masterninja01

3
-ln'est pas nécessaire. Il est sous-entendu par-a
Guido

11

La ligne suivante devrait faire l'affaire pour cela:

rsync --partial --progress --rsh = ssh -r me@host.com: / datafiles / ./

Je n'ai jamais utilisé cela pour des répertoires récursifs auparavant, mais quand je l'ai envoyé par SMS, il semblait fonctionner comme prévu.


1
Cela fonctionne aussi, tant que vous incluez le -r =)
physicsmichael

La plupart de mes transferts rsync sont du type "rsync -ahP quelque chose / user @ host: / quelque part /". Le --rsh = ssh est complètement inutile. Ensuite, -P traîne également dans --partial et --progress.
killermist

1

La commande rsync que vous avez répertoriée fonctionnerait si vous ajoutiez seulement "-r". mais vous voudriez aussi très probablement "-a" et "-v".

Et à propos de la barre oblique de fin, me@site.com: / data / est équivalent à / data / *, en d'autres termes, si vous ajoutez une barre oblique, elle copie tout le contenu. mais me@site.com: / data serait l'annuaire lui-même [et naturellement, ses sous-dossiers]


1

La fusion des réponses de Kibitzer et Tyler a fonctionné le mieux pour moi:

rsync --partial --progress -avzl -e ssh /directory/with/files/ you@host.com:/new/directory/

(rsyncing récursif et montrant la progression de chaque fichier)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.