web-dev-qa-db-fra.com

Comment puis-je obtenir un répertoire entier dans sftp?

J'apprends à utiliser sftp et je veux copier un répertoire de l'ordinateur distant sur mon ordinateur local. Si j'essaye

get [directory]

ça me donne cette erreur:

Cannot download non-regular file: /home/mpirocch/Documents

get -R ne fonctionne pas non plus.

181
Matthew

Utilisez l'indicateur -r (récursif):

get -r *
255
mani-fresh

Utilisation:

scp -r mpirocch@my-server:/home/mpirocch/Documents Documents
53
Cristian Ciupitu

Utilisez lftp :

lftp sftp://user@Host

Ensuite, dans lftp, cd dans le répertoire que vous souhaitez copier et utilisez la commande mirror pour télécharger récursivement le répertoire sélectionné, comme ceci:

mirror

Cette commande accepte les options et les arguments:

miroir [OPTIONS] [la source  [cible]]

Par exemple, l'option -R (ou --reverse) lui permet de télécharger l'arborescence du répertoire local dans le répertoire distant:

mirror -R

Reportez-vous à la page de manuel lftp(1)du site du projet ou de Debian.org pour connaître les autres commandes et options.

40
bshanks

N'utilisez pas directement le programme sftp si vous pouvez trouver quelque chose de mieux. Pour Linux, de nombreux gestionnaires de fichiers (au moins Nautilus et Dolphin, GNOME et KDE) prennent en charge sftp de manière native, et il y a toujours sshfs. Pour Windows, il y a WinSCP, et probablement autres . Le but de tout cela est de vous permettre d’accéder aux fichiers sur sftp comme s’ils se trouvaient sur un système de fichiers classique, de sorte que vous n’ayez pas à vous soucier de leur accès via sftp.

15
Ryan Thompson

eh bien, ce petit guide devrait vous aider, mettez en miroir un serveur distant dans un dossier local avec lftp

lftp sftp://user:[email protected]:22 -e 'mirror --verbose --use-pget-n=8 -c /remote/path /local/path'

  • sftp:// = utilise le protocole SFTP
  • mirror = mode miroir
  • verbose = affiche les fichiers en cours de téléchargement
  • use-pget-n = nombre de segments, vraiment utile pour accélérer les gros fichiers
  • parallel = télécharge des fichiers multiplicateurs en même temps

si vous souhaitez télécharger des fichiers en parallèle, désactivez use-pget-n=8 avec --parallel=8

espérons que cela aide tous ceux qui ont besoin de mettre en miroir un dossier distant dans un dossier local

14
nwgat

Essayez mget au lieu de get.

Clarification: mgetwillwork si vous êtes dans le répertoire que vous voulez copier; si vous faites quelque chose comme ceci:

sftp> cd dir_to_get
sftp> mget *

il obtiendra tous les fichiers dans ce répertoire. Cependant, not obtiendra récursivement le contenu de tous les sous-répertoires.

13
Ken Keenan
get -r [directory]

obtient [directory] et tout ce qui se trouve en dessous, où r signifie récursif. J'ai trouvé cela simplement en tapant help à partir de sftp.

9
drkvogel

Comme avec cp:

scp -rp user@Host:/path/to/dir dir

Ce qui précède préservera les temps et les modes des fichiers et sous-répertoires d'origine. Ceci est particulièrement utile pour la récupération de sauvegardes.

4
Aziraphale

J'ai le dossier de dist de Java dans le serveur distant, où j'ai l'arbre suivant:

- dist
--- Audio.jar
--- README
--- lib
----- lib.jar

L'objectif est: je veux utiliser SFTP? Et mettez-les dans/tmp/<>

Étape 1. sftp remoteuser @ ip

Étape 2. cd/var/tmp

Étape 2. lmkdir/tmp/dist; lmkdir/tmp/dist/lib

Étape 3. lcd/tmp/dist

Étape 4. mget *

Étape 5. lcd/tmp/dist/lib

Étape 6. mget *

Étape 7. enfin j'ai mon objectif

$ ls
Audio.jar  lib  README.TXT
0
YumYumYum