Lorsque j'essaie d'utiliser sftp pour transférer un répertoire contenant des fichiers, je reçois un message d'erreur:
skipping non-regular file directory_name
Le répertoire contient quelques fichiers et deux sous-répertoires.
Qu'est-ce que je fais mal?
-r
à lasftp
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.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)la source
-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 estscp
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
la source
Cela fonctionne pour moi:
1) se connecter via
sftp
à l'hôte distant2) 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 *
la source
Si ce
rsync
n'est pas une option, je recommanderais ensuitelftp
:Ensuite, utilisez la
mirror
commande pour télécharger de manière récursive, comme ceci:(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:
Vous devez
cd
entrer dans les répertoires que vous voulez mettre en miroir. Fonctionne très bien!la source
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.
la source
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.la source
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»,
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:
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.
Voici une liste de quelques - unes des options les plus rsync commune: ( prise d'ici )
J'espère que ça t'as aidé!
la source
vous pouvez obtenir du serveur à votre chemin local par
la source