Você pode interromper o processo de cópia depois de algum tempo:
cp -R srcdir destdir &
sleep 10
kill -STOP $PID_OF_CP
sleep 10
kill -CONT $PID_OF_CP
Eu tenho um disco rígido com uma placa PCB ruim. Ele permanece ligado quando não estiver sob carga pesada e será reiniciado se eu copiar muitos dados dele. Até agora tive boa sorte em fazer pastas com menos de 500 MB se copiar uma pasta para o meu bom disco rígido, esperar cinco minutos, copiar outra, etc.
Se eu montar a unidade defeituosa e tentar copiar uma pasta de vários GBs em tamanho, ela será iniciada e, em seguida, interrompida à medida que a unidade de disco rígido for reiniciada. Quando tento montar a unidade novamente, o Linux diz que não consegue ler o superbloco. Eu tenho várias pastas com mais de 30 GB de dados em muitas pastas diferentes.
O que estou procurando é uma maneira de copiar uma pasta no Linux, de modo que os comandos colem a pasta inteira em partes com um intervalo intermediário.
Você pode interromper o processo de cópia depois de algum tempo:
cp -R srcdir destdir &
sleep 10
kill -STOP $PID_OF_CP
sleep 10
kill -CONT $PID_OF_CP
Se uma transferência lenta (ou seja, sem pausas, mas baixa taxa de dados) irá funcionar, então algo como isso deve fazer. Os comandos tar
empacotam todos os arquivos em um fluxo de dados e o comando pv
limita a taxa de transferência de dados desse fluxo.
tar cf - <source> | pv --rate-limit 1m | (cd <destination> && tar xf -)
Eu não testei isso sozinho, então a sintaxe pode estar um pouco errada.
você pode primeiro minimizar o peso do arquivo a ser transferido usando a compactação gzip máxima e, em seguida, rsync os tarballs com uma opção de tempo limite. Além disso, você pode rodar o rsync uma segunda vez, para o caso de seu bom disco desaparecer. O Rsync olharia os arquivos nos dois locais e copiaria a diferença: continuaria a cópia do ponto em que a sincronização foi interrompida.
Tags linux