Você pode simplesmente executar o comando rsync ou qualquer comando de cópia que você deseja usar combinado com bom para definir a prioridade do processador e / ou ionice para definir a prioridade do io.
Por razões que não vou entrar, eu preciso copiar diretórios, desde que a carga média do sistema seja baixa. Alguém pode me ajudar a escrever um script BASH que copie o conteúdo de um diretório, mas verifique se a carga média do sistema está abaixo de X antes de copiar cada arquivo e, se não, aguarde Y segundos e tente novamente?
Existe uma opção de rsync
que limita a largura de banda de E / S:
--bwlimit=KBPS limit I/O bandwidth; KBytes per second
apenas por diversão (e sim, eu sei que ele não tenta copiar o arquivo novamente no caso de ele entrar no modo sleep, eu vou deixar isso para você se divertir; andar por cima de "$ @" mente + deslocamento):
#!/bin/bash for i in file1 file2 file3 etc do LOAD=$(uptime | awk '{ sub(/,.*/, "", $9); print $9 * 100.0 }' ) if [ $LOAD -lt 85 ] then echo "copy $i to wherever" else echo "sleep since load is $LOAD" sleep 5 fi done
usando a média de carregamento do último minuto e copiando somente se o sistema estiver 85% inativo, vai fazer alguma coisa.
de qualquer forma, eu usaria apenas rsync com throtteling (como dennis mencionou) além de definir um valor alto (igual a baixa prioridade) ao processo rsync (como zoredache mencionado) e deixar o os fazer o agendamento (que é projetado para faça exatamente isso.