Existuje způsob, jak zpomalit proces kopírování v systému Linux?
Mám velký soubor, řekněme 10 GB, a rád bych ho zkopíroval do jiného adresáře, ale nechci ho kopírovat plnou rychlostí. Řekněme, že bych to chtěl zkopírovat rychlostí 1 MB/s, ne rychleji. Chtěl bych použít standardní Linux cp
příkaz.
Je to možné? (Pokud ano, jak?)
Upravit :Takže přidám další kontext k tomu, čeho se snažím dosáhnout.
Mám problém na systému ArchLinux při kopírování velkých souborů přes USB (na pendrive, usb disk atd.). Po zaplnění vyrovnávací paměti usb mi systém přestane reagovat (dokonce i myš, pohybuje se jen sporadicky). Operace kopírování stále probíhá, ale vyžaduje 100% zdrojů krabice. Po dokončení operace kopírování se vše vrátí do normálu — vše opět perfektně reaguje.
Možná je to hardwarová chyba, nevím, ale vím, že mám dva stroje s tímto problémem (oba jsou na ArchLinuxu, jeden je stolní box, druhý je notebook).
Nejjednodušším a nejrychlejším „řešením“ tohoto (souhlasím, že to není „skutečné“ řešení, jen ošklivý „hack“) by bylo zabránit zaplnění této vyrovnávací paměti zkopírováním souboru s průměrnou rychlostí zápisu z jednotky USB, např. mně by to stačilo.
Přijatá odpověď:
Potrubí můžete přiškrtit pomocí pv -qL
(nebo cstream -t
poskytuje podobnou funkci)
tar -cf - . | pv -q -L 8192 | tar -C /your/usb -xvf -
-q
odstraní hlášení průběhu stderr.
-L
limit je v bajtech.
Další informace o --rate-limit/-L
příznak z 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.
Tato odpověď původně odkazovala na throttle
ale tento projekt již není dostupný, takže vypadl z některých balíčkových systémů.