Obtém o caminho do arquivo sobre o ssh

1

Estou desenvolvendo uma API na qual preciso dos caminhos de vários arquivos de um servidor remoto. O número de arquivos varia de 100 a 500. Os arquivos estão em pastas diferentes.

Então, eu estou repetindo várias vezes, como 10-50 (dependendo do número de arquivos) vezes, e então obtendo caminhos usando ssh na minha API python.

Mas eu quero uma solução otimizada para esse problema. Neste momento, estou fazendo a conexão ssh quantas vezes o loop for, o que é lento, e também não é a melhor coisa a se fazer.

Eu estava pensando em copiar o /var/lib/mlocate/mlocate.db do servidor remoto diariamente em minha máquina local e, em seguida, encontrar o caminho usando o comando locate usando esse banco de dados, se isso for possível. OU Como armazenar o índice do diretório remoto na minha máquina local, que posso consultar mais rapidamente.

Quais são as outras formas melhores de conseguir isso?

    
por luv.preet 23.02.2018 / 18:01

1 resposta

2

árvore

Parece que tree é muito rápido na produção de uma lista de todos os caminhos de arquivos. Com o SSH, e no contexto do seu script, um comando pode se parecer com isso

ssh user@host "tree -if --noreport /your/base/directory" > /tmp/tree.output

-i para ter essa saída em lote em vez da árvore gráfica pura -f para imprimir o prefixo do caminho completo para cada linha de - noreport para cortar as últimas duas linhas pois tree acrescenta uma linha vazia e um resumo dos arquivos / diretórios encontrados

A saída ficaria assim

/var
/var/backups
/var/backups/alternatives.tar.0
/var/backups/alternatives.tar.1.gz
/var/backups/apt.extended_states.0
/var/backups/apt.extended_states.1.gz
/var/backups/apt.extended_states.2.gz
/var/backups/aptitude.pkgstates.0
/var/backups/dpkg.arch.0
/var/backups/dpkg.arch.1.gz

Você pode querer dar uma olhada na página do manual , para ver algumas opções sobre como os links simbólicos são exibido com -l , etc

encontrar

find também pode ser usado para o mesmo propósito

ssh user@host "find /your/base/directory" > /tmp/find.output

novamente, você pode querer verificar como você lida com os links simbólicos i na página man .
Com find você também pode granular em relação a tipos de arquivos, padrões, profundidade, etc ...

por Robert Riedl 23.02.2018 / 18:31