Copie um monte de arquivos de forma recursiva leva a um problema de calor no meu disco rígido externo

2

A situação:
Eu quero copiar um diretório recursivamente para um disco rígido externo. O diretório contém muitos arquivos (pelo menos 100.000).

O problema:
Discos rígidos externos tendem a ficar muito quentes quando muito usados, como na minha tarefa (uso por várias horas). Isso é ruim para a expectativa de vida. Então, como o tempo não é um problema no meu caso, eu gostaria que a cópia fosse descansar entre copiar os arquivos para permitir que a unidade esfriasse um pouco.

No momento, uso ionice -c3 nice nice cp -r , que pelo menos reduziu a perda de desempenho para todas as outras tarefas em execução. Mas isso não resolve o problema do calor.

Alguma sugestão?

Não é permitido usar outros comandos além de cp como rsync (se aplicável a partir da linha de comando), mas até agora não consegui encontrar nenhum comando ou opção que me permita esperar x segundos entre cada cópia de arquivo. p>

Informações adicionais: O disco rígido externo é o destino final dos dados e não uma maneira de transferir os dados para outro computador.

    
por MrSmith42 06.07.2016 / 13:47

3 respostas

4

Não é particularmente elegante, mas você pode executar o comando de cópia e, em seguida, executar um loop com pausa para, digamos, 3 minutos a cada 20 minutos:

  1. Inicie seu comando de cópia em segundo plano

    cp -r /path/to/dir /path/to/external/drive &
    
  2. Execute este loop que irá parar / reiniciá-lo:

    while ps -p $! >/dev/null; do 
        kill -SIGCONT $!; 
        sleep 20m; 
        kill -s SIGSTOP $!; 
        sleep 3m; 
    done
    
por 06.07.2016 / 14:11
2

rsync tem uma opção para limitar o rendimento; por exemplo --bwlimit=1 é 1 kibibyte / segundo. Use um sufixo de K M ou G para multiplicar o número, sendo o padrão K. A página man fala sobre sockets, mas também se aplica a cópias locais.

Você pode tentar executar sudo smartctl -a /dev/sdx no seu disco sd x para ver se há alguma indicação de que ele esteja com excesso de temperatura, embora nem todos os discos e barramentos implementem o SMART.

Você pode tentar hdparm -M 128 (verificar sua página de manual para sua versão deste comando) no seu disco para fazer gerenciamento acústico que deve diminuir o movimento da cabeça para reduzir o ruído, mas também o calor. / p>     

por 06.07.2016 / 15:19
0

Eu pensei em um caminho. Infelizmente, ele não retoma, então supõe que você não se importa em deixar o computador ligado. Não testado também.

EDIT: woops, a resposta revisada de terdon é muito melhor.

SRC=src # source directory
DEST=dest # target directory
LOCKFILE=/var/tmp/copy.lock

BATCH_LEN=5m # 5 minutes
BATCH_DELAY=5m

touch "$LOCKFILE"

(cd "$SRC" && tar -cf - .) |
(cd "$TMP" && while [ -e "$LOCKFILE" ]; do
    dd bs=4K & (sleep $BATCH_LEN; kill %1 >/dev/null)
    sleep $BATCH_DELAY
 done) |
(cd "$DEST" && tar -xpf - ; rm "$LOCKFILE")
    
por 06.07.2016 / 15:50