Usando o sftp para transferir um diretório?

36

Quando tento usar o sftp para transferir um diretório contendo 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 de errado?

    
por haziz 16.12.2011 / 00:38

7 respostas

37

sftp , como cp e scp , exige que quando você copia uma pasta (e seu conteúdo, obviamente), você precisa explicitamente informar que deseja transferir a pasta recursivamente com a opção -r .

Então, adicione -r ao comando.

    
por 16.12.2011 / 01:18
16

Eu só posso sugerir, você usa rsync . É um padrão de mercado, ao mover arquivos em conexões seguras.

rsync -alPvz ./source_dir server.com:destination_dir

É o que venho usando há anos até agora.

(a opção -a cuida de coisas como recursão de diretório)

    
por 24.05.2012 / 03:02
5

Você também pode usar o uso scp . O formato geral é

scp -rp sourceDirName username@server:destDirName

scp significa "cópia segura". As bandeiras são

  • -r recurse em subdiretórios
  • -p preserva os tempos de modificação

Eu acredito que o resto dos itens são auto-explicativos

    
por 25.03.2016 / 18:31
4

Se rsync não for uma opção, recomendarei em seguida lftp :

lftp sftp://[email protected]/path/path/

Em seguida, use o comando mirror para fazer o upload recursivamente, assim:

mirror -R

(Observe que a recursão é o padrão. O -R é para reverter - para fazer o upload do comando mirror em vez do download. Tente adicionar --dry-run para fazer uma avaliação para ter certeza de que está fazendo o que você espera.)

Ou para enviar sem recursão:

mirror --no-recursion

Você precisa cd nos diretórios que deseja espelhar. Funciona muito bem!

    
por 16.12.2014 / 15:25
2

Se puder, use sshfs . É um sistema de arquivos FUSE , disponível na maioria dos unices modernos, e funciona com qualquer servidor SFTP. Este é um sistema de arquivos remoto: ele permite que você manipule arquivos remotos (através do protocolo SFTP) com os utilitários usuais.

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
    
por 24.05.2012 / 01:22
2

Isso funciona para mim:

1) conecte via sftp ao host remoto

2) mude para o diretório remoto que você deseja copiar. (Exemplo: cd Music)

3) mude para o diretório local para o qual você deseja copiar o material. (Exemplo: lcd Desktop)

4) Emita este comando: get -r *

    
por 03.09.2013 / 16:16
0

É um pouco desajeitado, mas o que funciona para mim é:

  1. Use ssh para efetuar login na máquina remota
  2. Use sftp da máquina remota para sua máquina local
  3. Em seguida, use o comando get com a opção -r para mover o diretório e todos os seus arquivos.
por 10.02.2016 / 23:27