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.
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?
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)
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
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!
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
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 *
É um pouco desajeitado, mas o que funciona para mim é:
ssh para efetuar login na máquina remota sftp da máquina remota para sua máquina local get com a opção -r para mover o diretório e todos os seus arquivos.