Linux: Como enviar todos os arquivos no diretório para o diretório remoto via sftp

2

Assim como o título sugere, eu tenho um diretório local, por exemplo:

/home/whoever/files_to_send

E quero enviar todos os arquivos desse diretório para um local remoto:

[email protected]:/some/remote/directory

Como faço isso com SFTP ?

PS. Eu preciso de uma resposta para SFTP specificaly, eu não posso usar SCP ou qualquer outra coisa.

    
por RandomWhiteTrash 11.02.2013 / 09:51

2 respostas

9

Você pode usar o comando put com a opção -r para uma cópia recursiva.

 put [-Ppr] local-path [remote-path]
         Upload local-path and store it on the remote machine.  If the remote path name is not specified, it is given the same name it has on the local machine.  local-path may contain glob(3) char‐
         acters and may match multiple files.  If it does and remote-path is specified, then remote-path must specify a directory.

         If either the -P or -p flag is specified, then full file permissions and access times are copied too.

         If the -r flag is specified then directories will be copied recursively.  Note that sftp does not follow symbolic links when performing recursive transfers.

modo interativo

$ sftp my.server.com 
Connected to my.server.com.
sftp> put -r /home/whoever/files_to_send /some/remote/directory

Comando único para exec do cron

$ cat batchfile
put -r /home/whoever/files_to_send /some/remote/directory
$ sftp -b batchfile my.server.com

O que você realmente deve aprender com isso é ler o manual online, sftp(1) .

    
por 11.02.2013 / 10:08
0

Eu queria sincronizar um diretório inteiro (com todas as subpastas também recursivamente). Eu não consegui terminar com sftp , mas consegui fazer isso com yafc

Instale-o (OSX)

brew install yafc

Conecte-se ao servidor

yafc sftp://[email protected]

Supondo que a pasta "exemplo" existe localmente, -r para recursivo, -f para forçar (sem pedir para sobrescrever)

put -rf example

No meu caso, eu também preciso chmodar os arquivos porque as permissões não foram copiadas (nem mesmo com o sinalizador -p)

chmod 0755 example/*
    
por 24.11.2016 / 17:46

Tags