J'utilise la commande scp shell pour copier un énorme dossier de fichiers.
Mais à un moment donné, j'ai dû tuer la commande en cours d'exécution (par Ctrl + C ou tuer).
À ma connaissance, scp copiait les fichiers séquentiellement, il ne devrait donc y avoir qu'un seul fichier partiellement copié.
Comment la même commande scp peut-elle être reprise pour ne pas écraser les fichiers copiés avec succès et pour gérer correctement les fichiers partiellement copiés?
PS Je sais que je peux faire ce genre de choses dans rsync, mais scp est plus rapide pour moi pour une raison quelconque et je l'utilise à la place.
dd
avec uneskip
variable appropriée et diriger versssh
:)Réponses:
Vous devriez utiliser
rsync
plusssh
L'option clé est
-P
, qui est la même que--partial --progress
D'autres options, telles que
-a
(pour le mode archive) et-z
(pour activer la compression) peuvent également être utilisées.Le manuel: https://download.samba.org/pub/rsync/rsync.html
la source
-r
. Source: lucasb.eyer.be/snips/rsync-skipping-directory.htmlrsync -P -rsh remoteuser@remotehost:/remote/path /local/path
Une alternative à rsync:
À utiliser
sftp
avec l'option-r
(copier récursivement des répertoires entiers) et l'option-a
desftp
laget
commande de pour reprendre les transferts partiels de fichiers existants.Prérequis: votre
sftp
implémentation a déjà une optionget
avec-a
.Exemple:
Copiez le répertoire
/foo/bar
du serveur distant vers votre répertoire courant local. Le répertoirebar
sera créé dans votre répertoire courant local.la source
echo "put -a foo/bar" | sftp -r server:/foo
Depuis OpenSSH 6.3, vous pouvez utiliser la
reget
commande danssftp
.Il a la même syntaxe que le
get
, sauf qu'il démarre un transfert à partir de la fin d'un fichier local existant.la source
Une autre possibilité est d'essayer de récupérer le scp que vous avez déjà commencé lorsqu'il se bloque.
ctrl + z en arrière-plan et arrêtez-le, puis ssh sur le serveur de réception et connectez-vous, puis quittez. Maintenant, fg le processus scp et regardez-le reprendre de «bloqué»!
la source
Lorsque rsync se bloque également après quelques secondes lors du démarrage initial, j'ai fini avec la solution de force brute suivante:
la source
Vous pouvez utiliser les options
-rsh
et-P
dersync
.-P
est pour téléchargement partiel et-rsh
indique que le transfert se fait via ssh procotol.La commande complète serait:
rsync -P -rsh remoteuser@remotehost:/remote/path /local/path
la source
J'ai eu le même problème hier, en transférant un énorme dump sql via scp, j'ai eu de la chance avec
wget --continue the_url
Ce billet de blog l'explique assez bien http://www.cyberciti.biz/tips/wget-resume-broken-download.html
la source