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.