web-dev-qa-db-fra.com

Comment puis-je reprendre un transfert de fichier SCP important lors de l'utilisation de transfert de port?

J'ai une machine à un couple de sauts, et j'ai besoin de configurer le transfert de port afin de transférer des fichiers.

EDIT: Pour être clair, les mouvements multiples sont nécessaires pour accéder à la machine distante. Depuis ma machine, j'ai mis en place un VPN, où je peux accéder au 10.255.x.x - c'est la seule machine que je peux me connecter via le VPN. Une fois connecté à .x.x, je peux ensuite vous connecter à d'autres machines - .Y.y être l'un de ceux-ci.

De ma machine:

ssh -L 4567:localhost:4567 [email protected]

Puis de cette machine:

ssh -L 4567:localhost:22 [email protected]

Je peux alors

scp -P 4567 me@localhost:/path/to/large/file.gz .

J'ai quitté cette opération de surnée, seulement pour constater que le transfert est mort à un moment donné.

J'ai vu quelques suggestions d'utiliser RSYNC sur SSH pour reprendre le transfert, mais je ne suis pas clair comment définir cela. Est-ce possible?

10
chris

Avec certaines versions de SCP (la version de l'ordinateur source semble être la clé), il suffit de ré-exécuter la commande SCP suffira à reprendre le transfert. Mais fais attention! Si votre version ne prend pas en charge les transferts partiels, le fichier partiel sera simplement écrasé.

Les commutateurs RSYNC suivants sont utiles pour reprendre un transfert brisé si SCP ne le supporte pas:

     --append                append data onto shorter files
     --append-verify         like --append, but with old data in file checksum
 -e, --rsh=COMMAND           specify the remote Shell to use
     --progress              show progress during transfer

La commande

rsync --append-verify --progress --rsh="ssh -p 4567" me@localhost:/path/to/large/file.gz .

devrait avoir l'effet souhaité. Notez que le -p Le commutateur doit être minuscule pour SSH.

9
Dennis

Utilisez SFTP au lieu de SCP

Dans ton cas:

sftp -a -P 4567 me@localhost:/path/to/large/file.gz .

De la page SFTP Man:

-a      Attempt to continue interrupted downloads rather than overwriting existing partial or complete copies of files.  If the remote file contents differ from the partial local copy then the resultant file is likely to be corrupt.
2
AlexR

rSYNC utilise SSH par défaut, vous devrez peut-être spécifier la commande SSH exacte à l'aide d'un commutateur RSYNC. Il a également un -Partial qui devrait conserver le fichier incomplet autour de sorte qu'il peut reprendre le transfert.

1
Luke Hollins