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 [email protected]:/datafiles/ ./
... Happy Transfer ...
...     BREAK!     ...
$ rsync -P [email protected]:/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é.

physiquemichael
la source

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/ [email protected]:/new/directory/
kibitzer
la source
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 [email protected]: / 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.

Tyler
la source
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, [email protected]: / data / est équivalent à / data / *, en d'autres termes, si vous ajoutez une barre oblique, elle copie tout le contenu. mais [email protected]: / data serait l'annuaire lui-même [et naturellement, ses sous-dossiers]

Mat
la source
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/ [email protected]:/new/directory/

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

Tarc
la source