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=KBPS
limitare 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