Réponses:
sftp
, like cp
et scp
, exige que lorsque vous copiez un dossier (et son contenu, évidemment), vous devez lui indiquer explicitement que vous souhaitez transférer le dossier de manière récursive avec l' -r
option.
Alors, ajoutez -r
à la commande.
-r
à la sftp
commande lorsque vous vous connectez. sftp -r user@host
Couldn't canonicalise: No such file or directory
.
# sftp user@remote-host
#> get -r remote-folder
Je ne peux que suggérer, vous utilisez rsync
. Il s'agit en quelque sorte d'un standard de l'industrie lorsque vous déplacez des fichiers via des connexions sécurisées.
rsync -alPvz ./source_dir server.com:destination_dir
C'est ce que j'utilise depuis des années.
(l' -a
option prend en charge des choses comme la récursion de répertoire)
-a
= récursivité + conserver les liens symboliques, les autorisations, les temps de modification, le propriétaire, le groupe, les fichiers spéciaux et les fichiers de périphérique (ce dernier nécessite des privilèges de super-utilisateur); -l
= conserver les liens symboliques (déjà inclus dans -a
); -P
= affiche la progression pendant le transfert + conserve les fichiers partiellement transférés; -v
= mode verbeux (toutefois, cela semble obligatoire -P
pour éviter une erreur étrange (bug?) protocol version mismatch
); -z
= activer la compression des données transférées.
-l
commutateur doit être utilisé ou non. Je me souviens d' anciennes versions ne sont pas -l
en -a
.
Vous pouvez également être en mesure d'utiliser scp
. Le format général est
scp -rp sourceDirName username@server:destDirName
scp
signifie "copie sécurisée". Les drapeaux sont
-r
recurse dans des sous-répertoires-p
préserver les temps de modificationJe crois que le reste des articles est explicite
Cela fonctionne pour moi:
1) se connecter via sftp
à l'hôte distant
2) accédez au répertoire distant que vous souhaitez copier. (Exemple: cd Music)
3) accédez au répertoire local dans lequel vous souhaitez copier des éléments. (Exemple: bureau lcd)
4) Émettez cette commande: get -r *
Si ce rsync
n'est pas une option, je recommanderais ensuite lftp
:
lftp sftp://user@host.com/path/path/
Ensuite, utilisez la mirror
commande pour télécharger de manière récursive, comme ceci:
mirror -R
(Notez que la récursivité est la valeur par défaut. Il -R
s'agit de reverse - pour que la commande miroir soit chargée à la place du téléchargement. Essayez d'ajouter --dry-run
pour effectuer un essai afin de vous assurer qu'il répond à vos attentes.)
Ou pour télécharger sans récursion:
mirror --no-recursion
Vous devez cd
entrer dans les répertoires que vous voulez mettre en miroir. Fonctionne très bien!
Si vous le pouvez, utilisez sshfs . C'est un système de fichiers FUSE , disponible sur la plupart des ordinateurs modernes, et fonctionne avec n'importe quel serveur SFTP. Il s’agit d’un système de fichiers distant: il vous permet de manipuler des fichiers distants (via le protocole SFTP) avec les utilitaires habituels.
mkdir /mount/point
sshfs server.example.com:/remote/path /mount/point
ls /mount/point
cp -Rp /mount/point/somedir /local/location
fusemount -d /mount/point
C'est un peu un kludge mais ce qui fonctionne pour moi est de:
ssh
pour vous connecter à la machine distantesftp
de la machine distante à votre machine localeget
commande avec l' -r
option pour déplacer le répertoire et tous ses fichiers.sftp> get -r data /opt/bin get: Invalid flag -r
Si vous vous demandez en fait «comment utiliser sftp pour transférer un répertoire»,
sftp -r user@server
Mais si vous transférez un répertoire, je pourrais suggérer deux meilleures options, en fonction de vos besoins. sftp
nécessite de se connecter au serveur distant à l’aide d’une invite de commande de type ssh, mais si vous ne voulez que le fichier, il existe des moyens plus simples et plus rapides.
Scp
Pour un transfert ponctuel, pour télécharger, essayez:
# upload source directory to remote server
scp -rp source_dir user@server:dest
#download directory from remote server:
scp -rp user@server:source_dir dest
#specifying ssh key:
scp -rp -i ~/.ssh/key user@server:source_dir dest
#remote directory has spaces
scp -rp -i ~/.ssh/key user@server:"source\\ dir" dest
Rsync
Si vous envisagez de synchroniser les répertoires régulièrement, il est plus logique d'utiliser rsync. Il effectue des deltas entre les deux répertoires, permettant ainsi d’économiser du temps de transfert et des données sur le réseau.
rsync -r -a -v -e ssh --delete source_dir user@server:dest
Voici une liste de quelques - unes des options les plus rsync commune: ( prise d'ici )
J'espère que ça t'as aidé!
vous pouvez obtenir du serveur à votre chemin local par
scp -rp user@server:directoryname(full path) .