Quando tento usar o sftp para transferir um diretório que contém arquivos, recebo uma mensagem de erro:
skipping non-regular file directory_name
O diretório contém alguns arquivos e dois subdiretórios.
O que estou fazendo errado?
sftp
, like cp
e scp
, exige que, ao copiar uma pasta (e seu conteúdo, obviamente), você tenha que dizer explicitamente que deseja transferir a pasta recursivamente com a -r
opção
Então, adicione -r
ao comando.
-r
aosftp
comando quando você estiver se conectando.sftp -r user@host
Couldn't canonicalise: No such file or directory
.# sftp user@remote-host
#> get -r remote-folder
Só posso sugerir, você usa
rsync
. É um padrão do setor, ao mover arquivos através de conexões seguras.É o que venho usando há anos.
(a
-a
opção cuida de coisas como recursão de diretório)fonte
-a
= recursão + manter links simbólicos, permissões, tempos de modificação, proprietário, grupo, arquivos especiais e arquivos de dispositivos (o último requer privilégios de superusuário);-l
= manter links simbólicos (já incluídos-a
);-P
= mostra o progresso durante a transferência + mantém arquivos parcialmente transferidos;-v
= modo detalhado (no entanto, parece obrigatório quando usado-P
para evitar um erro estranho (bug?)protocol version mismatch
);-z
= habilita a compactação dos dados transferidos.-l
switch deve ou não ser usado. Lembro-me de versões mais antigas não incluiu-l
no-a
.Você também pode usar o uso
scp
. O formato geral éscp
significa "cópia segura". As bandeiras são-r
recursão em subdiretórios-p
preservar os tempos de modificaçãoEu acredito que o restante dos itens é auto-explicativo
fonte
Isso funciona para mim:
1) conectar via
sftp
host remoto2) mude para o diretório remoto que deseja copiar. (Exemplo: cd Music)
3) mude para o diretório local para o qual deseja copiar as coisas. (Exemplo: desktop lcd)
4) Emita este comando:
get -r *
fonte
Se
rsync
não for uma opção, eu recomendaria a seguirlftp
:Em seguida, use o
mirror
comando para fazer upload recursivamente, assim:(Observe que a recursão é o padrão. O inverso
-R
é o de fazer o upload do comando mirror em vez de fazer o download. Tente adicionar para fazer uma avaliação para garantir que está fazendo o que você espera.)--dry-run
Ou fazer upload sem recursão:
Você precisa
cd
entrar nos diretórios que deseja espelhar. Funciona bem!fonte
Se você puder, use sshfs . É um sistema de arquivos FUSE , disponível nas organizações mais modernas, e funciona com qualquer servidor SFTP. Este é um sistema de arquivos remoto: permite manipular arquivos remotos (através do protocolo SFTP) com os utilitários usuais.
fonte
É um pouco complicado, mas o que funciona para mim é:
ssh
para fazer login na máquina remotasftp
da máquina remota para a sua máquina localget
comando com a-r
opção de mover o diretório e todos os seus arquivos.fonte
sftp> get -r data /opt/bin get: Invalid flag -r
Se a sua pergunta é realmente 'como uso o sftp para transferir um diretório', então
Mas se você estiver transferindo um diretório, sugiro duas opções melhores, dependendo de suas necessidades.
sftp
requer o login no servidor remoto em um prompt de comando do tipo ssh, mas se tudo o que você deseja é o (s) arquivo (s), existem maneiras mais fáceis e rápidas.Scp
Para uma transferência única, faça o upload, tente:
Rsync
Se você planeja sincronizar os diretórios regularmente, usar o rsync faz mais sentido. Ele realiza deltas entre os dois diretórios, economizando tempo de transferência e dados através da conexão.
Aqui está uma lista de algumas das opções mais comuns do rsync: ( extraídas daqui )
Espero que ajude!
fonte
você pode ir do servidor para o caminho local
fonte