É possível exibir um cronômetro em execução em um script shell ao copiar um diretório?

3

Portanto, eu tenho um script de shell que basicamente faz o backup de um servidor para outro servidor. No processo eu tenho que cp um diretório muito grande (140GB) para outro local, no script shell eu gostaria de ter um contador de cronômetro em tempo real a partir de 0:00 como os arquivos estão copiando.

Possível?

EDIT: Não é uma ideia da barra de progresso :) Apenas um cronômetro simples para que você possa ver quanto tempo se passou, em vez do tempo até a dor acabar:)

    
por Mark 25.12.2015 / 03:34

2 respostas

3

Caso a solução rsync do David Kings não funcione para você ou você queira fazê-lo no bash (por que nunca), é assim que você pode fazer isso:

#!/bin/bash
your_command_to_execute &
myPid=$!
sleepTime=5
while kill -0 "$myPid" 2> /dev/null
do
    # Sleep for the defined time
    sleep $sleepTime
    # And print the time since the script started in seconds
    echo -en "Runtime $SECONDS3[0K\r"
done

Você pode querer usar algo para formatar o tempo um pouco melhor.
Também atualmente o script imprime os segundos desde o início do script, e não desde que a operação cp foi iniciada (se você quiser alterar isso, subtraia os segundos antes do loop do atual $SECONDS )

    
por 25.12.2015 / 18:15
2

Você usaria rsync -av --progress em vez de cp para fazer o que você quer?

    
por 25.12.2015 / 03:44