J'ai des problèmes pour télécharger des répertoires (qui contiennent d'autres répertoires de quelques niveaux) par sftp. Je me rends compte que je pourrais contourner cela en gzipping, mais je ne vois pas pourquoi c'est nécessaire.
En tout cas, j'essaye
sftp> put bin/
Uploading bin/ to /home/earlz/blah/bin
bin/ is not a regular file
sftp> put -r bin/
Uploading bin/ to /home/earlz/blah/bin
Couldn't canonicalise: No such file or directory
Unable to canonicalise path "/home/earlz/blah/bin"
Je pense que le dernier message d'erreur est complètement stupide. Donc le répertoire n'existe pas? Pourquoi ne pas créer le répertoire?
Existe-t-il de toute façon un problème avec sftp ou devrais-je simplement utiliser scp?
sftp
permetput -r
de OpenSSH 5.4Je ne sais pas pourquoi sftp fait cela, mais vous ne pouvez utiliser une copie récursive que si le répertoire de destination existe déjà. Alors fais ça ...
la source
-r
nécessite OpenSSH 5.4 ou supérieurVous pourriez être intéressé à utiliser à la
rsync
place. La commande pour cela seraitCela va tout copier
bin/
et le placer sur le serveur distant/home/earlz/blah/bin/
. De plus, il vérifiera d'abord si le fichier situé sur le côté distant n'a pas changé et s'il ne le fait pas, il ne le renverra pas. De plus, vous pouvez ajouter une option -z et il sera compressé pour vous.la source
sftp
s'agit d'une commande et d'un protocole .rsync
ne supporte pas lesftp
protocole.lcd
: votre dossier local (avec des sous-dossiers)cd
: votre dossier distantput -r .
la source
cd
entrer dans le répertoire que je voulais télécharger l'a fait. Je vous remercie!Puis-je suggérer une réponse un peu compliquée, sans compresser, mais en incluant du goudron?
Et c'est parti:
Cela compresse le répertoire ./bin avec tar (-cf: = crée le fichier), filename - (none, stdout) et le redirige vers la commande ssh vers target.org (qui peut aussi bien être une adresse IP) où la commande entre guillemets est effectuée, c’est-à-dire: cd to blah, et tar -xf (fichier d’extrait) - aucun, aucun nom, juste stdin.
C'est comme si vous emballiez un colis à la maison, apportez-le à la poste, puis rendez-vous au travail, où vous attendez le colis et ouvrez-le.
Peut-être existe-t-il une solution beaucoup plus élégante qui utilise simplement sftp.
la source
tar
est une très bonne solution, mais cela nécessite unssh
support de connexion (sftp
un protocole différent se trouve au-dessus dessh
).tar
, contrairement à d'autres, fonctionne par défaut de manière récursive par défaut , transfère tous les fichiers spéciaux (FIFO, périphériques bloc / caractère, etc.), tente de traduire le mappage UID / GID du système source vers le système cible et dispose d'une ligne de commande courte traditionnelle. (Une exception toutefois: les "sockets de domaine Unix" ne sont pas transférés. Mais qui en a besoin?)pv
outil pour surveiller la vitesse des transferts longs.Vous pouvez utiliser yafc (encore un autre client FTP / SFTP). L'
-r
option y fonctionne très bien.la source
Vous pouvez utiliser rsync , une alternative très puissante pour scp et sftp, en particulier lors de la mise à jour des copies de la machine A vers la machine B, car elle ne copie pas les fichiers qui n'ont pas été modifiés. il est également capable de supprimer des fichiers de la machine B qui ont été supprimés de la machine A (uniquement lorsque cela est indiqué à bien sûr).
par exemple :
L'option -r sert à la copie récursive de fichiers, -z active la compression pendant le transfert et -p conserve les droits d'accès (création, modification, etc.) lors de la copie, ce que scp n'effectue pas autant que je sache. Beaucoup plus d'options sont possibles. comme d'habitude, lisez les pages de manuel.
Réponse originale de Karolos
la source
Connectez-vous au serveur distant avec ssh, utilisez sftp pour vous reconnecter à votre boîte, puis utilisez la
get -r
commande pour transférer des répertoires sur le serveur distant. La commande get vous permet de transférer des répertoires de manière récursive sans que le répertoire ne soit déjà créé.la source
Cas SFTP:
Je devais copier cette structure sur mon ftp:
Cela a résolu mon problème:
la source
Le Wiki Arch Linux vient d’apprendre qu’il est possible de monter le partage sftp à l’aide de sshfs. J'exécute un serveur sftp avec chroot et jail et sshfs fonctionne très bien.
sshfs <sftpuser>@<server>:<read/writable/directory> <your/local/mount/directory>
fusermount -u <your/local/mount/directory>
la source