Puoi limitare una pipe con pv -qL (o cstream -t fornisce funzionalità simili)
tar -cf - . | pv -q -L 8192 | tar -C /your/usb -xvf -
-q rimuove i rapporti sullo stato di avanzamento di stderr.
Il -L il limite è in byte.
Maggiori informazioni sul --rate-limit/-L flag dal man pv :
-L RATE, --rate-limit RATE
Limit the transfer to a maximum of RATE bytes per second.
A suffix of "k", "m", "g", or "t" can be added to denote
kilobytes (*1024), megabytes, and so on.
Questa risposta originariamente indicava throttle ma quel progetto non è più disponibile, quindi è uscito da alcuni sistemi di pacchetti.
Invece di cp -a /foo /bar puoi anche usare rsync e limitare la larghezza di banda di cui hai bisogno.
Dal rsync manuale di:
--bwlimit=KBPSlimitare la larghezza di banda I/O; KByte al secondo
Quindi, il comando effettivo, che mostra anche l'avanzamento, sarebbe simile a questo:
rsync -av --bwlimit=100 --progress /foo /bar
Presumo che tu stia cercando di non interrompere altre attività. Le versioni recenti di Linux includono ionice che ti consente di controllare la programmazione di IO.
Oltre a consentire varie priorità, esiste un'opzione aggiuntiva per limitare l'IO ai momenti in cui il disco è altrimenti inattivo. Il comando man ionice visualizzerà la documentazione.
Prova a copiare il file usando un comando come:
ionice -c 3 cp largefile /new/directory
Se le due directory si trovano sullo stesso dispositivo, potresti scoprire che il collegamento del file fa quello che vuoi. Se stai copiando a scopo di backup, non utilizzare questa opzione. ln è estremamente veloce in quanto il file stesso non viene copiato. Prova:
ln largefile /new/directory
Oppure, se vuoi solo accedervi da una directory su un dispositivo diverso, prova:
ln -s largefile /new/directory