Copiando o arquivo mais recente do servidor remoto

2

Há uma coleção de arquivos .doc , além de outros tipos de arquivos, em um servidor remoto (que suporta SCP).

Eu estou tentando escrever um script para recuperar o arquivo .doc mais recente (modificado mais recentemente) do servidor remoto. O caminho para o diretório de trabalho atual não pode ser absoluto, pois meu script pode ser implantado em outro servidor.

Eu sou capaz de resolver o problema parcialmente em duas etapas:

  1. Copie todos os arquivos .doc do servidor remoto para minha pasta ~/Downloads local:

    scp -i key.pem abc@xyz:/tmp/*.doc ~/Downloads/
    
  2. Selecione o arquivo mais recente em ~/Downloads e copie-o para a pasta desejada:

    cd ~/Downloads
    latest_file=$(ls -t *.doc | head -n 1)
    cp -p "$latest_file" /current working directory
    

Como posso copiar o arquivo .doc mais recente presente no servidor remoto xyz sob a pasta /tmp para minha máquina local em uma única instrução sem fazer o download de todos eles em uma pasta intermediária?

    
por alex 28.05.2015 / 21:15

2 respostas

2

Eu não estou realmente claro qual é o seu problema, mas se você está tentando copiar para o diretório atual, use apenas . para se referir ao diretório atual para que seu comando seja:

scp -i key.pem abc@xyz:/tmp/*.doc .
    
por 28.05.2015 / 21:23
1

Vamos ver se isso resolverá seu problema. Faça um script.

FILE='ssh abc@xyz ls -ht /tmp/*.doc | head -n 1'
rsync -avz -e ssh abc@xyz:"$FILE" .

Isso executará um comando no servidor remoto "ls -ht /tmp/*.doc | head -n 1" e mostrará o documento mais recente. Rsync que o arquivo especificado do servidor remoto para o seu diretório atual. O ssh / rsync também lhe pedirá uma senha para o usuário "abc", melhor é usar um login sem senha ou um keyfile "key.pem".

    
por 28.05.2015 / 23:55