Kako ubrzati prijenos datoteka u Linuxu

Zadnje ažuriranje: 23/02/2026
Autor: Isaac
  • Predmemorija pisanja kernela i parametri vm.dirty_* imaju odlučujući utjecaj na percipiranu brzinu kopiranja u Linuxu.
  • Prilagođavanje postavki memorije i korištenje predkompresije smanjuje vrijeme potrebno za kopiranje velikih datoteka na spore diskove.
  • Naredba SCP omogućuje sigurne i učinkovite prijenose, s opcijama kao što su -C, -lo i -P za optimizaciju performansi i kontrole propusnosti.
  • Odabir između SCP-a i SFTP-a te kombiniranje konzolnih i grafičkih alata pruža fleksibilnost za brzo premještanje datoteka u različitim okruženjima.

Ubrzajte prijenos datoteka u Linuxu

Ako svakodnevno koristite Linux, vrlo je vjerojatno da ste barem jednom zurili u ekran. Traka napretka je stalno spora prilikom kopiranja velikih datoteka.Bilo da se radi o USB pogonu, drugom poslužitelju preko mreže ili između internih pogona, brzina prijenosa je nevjerojatno velika. U međuvremenu, na istom hardveru, pokrenete Windows i sve leti brzinom od 60-80 MB/s. Osjećaj je frustrirajući i daje dojam da je Linux "spor" u premještanju podataka.

Stvarnost je mnogo nijansiranija: sustav funkcionira drugačije, Jezgra koristi agresivne predmemorije za pisanje; postoje konzervativni zadani parametri.I vrsta datotečnog sustava, metoda kopiranja, pa čak i šifriranje veze također igraju ulogu. Razumijevanje onoga što se događa "ispod haube" omogućuje vam fino podešavanje sustava i postizanje puno bližih performansi koje vidite na drugim sustavima.

Zašto se kopiranje datoteka u Linuxu čini tako sporim?

Jedna od najčešćih pritužbi je ogromna razlika između percipirane brzine u Linuxu i Windowsima. prilikom kopiranja mnogo gigabajta (ili terabajta) na vanjski USB pogonPostoje korisnici koji prijavljuju stvarne slučajeve: na Windowsima isti vanjski disk postiže stabilnih 60-80 MB/s, dok na Linuxu kopiranje počinje snažno i ubrzo pada na 2-10 MB/s, što prijenos nekoliko terabajta čini pitanjem dana, a ne sati.

U drugim scenarijima, na primjer pri prijenosu kolekcije videozapisa od 1 do 3 GB između dva Linux poslužitelja, brojke od oko 20 MB/s s rsync-om u odnosu na 100 MB/s korištenjem Sambe s Windows računala kao posrednik. Na prvi pogled čini se nelogičnim: rsync je učinkovit, putuje preko SSH-a i teoretski bi trebao biti najbrža opcija.

Sve to stvara dojam da postoji trajna greška u kernelu koja onemogućuje korištenje Linuxa za velike sigurnosne kopije. U stvarnosti, ove situacije uzrokovane su kombinacijom čimbenika: predmemorija za pisanje, parametri memorijskog podsustava, USB značajke, vrsta datotečnog sustava i korišteni alatiPrilagođavanjem svakog dijela možemo uvelike poboljšati performanse.

Nadalje, ključno je razumjeti da u Linuxu brzina prikazana u dijalogu za kopiranje ili traci napretka ne odražava uvijek što se događa na disku. Prvo se kopira u RAM, a zatim se u rafalima flešuje na uređaj.A to uzrokuje skokove, pauze i taj dosadni osjećaj "smrznuto je".

Optimizacija velikih kopija u Linuxu

Predmemorija pisanja kernela: očiti pravi krivac

Linux se uvelike oslanja na RAM za međuspremnik operacija diska. Kada kopirate podatke na spor disk, kao što je USB tvrdi disk ili flash pogonSustav ne zapisuje sve odmah na uređaj. Prvo, pohranjuje podatke u predmemoriju (neispravnu memoriju) i, kada se ispune određeni uvjeti, počinje prenositi te podatke u pozadini.

To stvara obmanjujući efekt: kopiranje počinje punom brzinom, traka napretka raste vrlo brzo, a onda se grafičko sučelje odjednom čini kao da se zamrzne na nekoliko minuta. U stvarnosti, Predmemorija je puna i sada kernel trzavo prazni tu memoriju na USB uređaj.a istovremeno se trudi osigurati da oprema ostane upotrebljiva za druge zadatke.

Ako koristite monitor diska (na primjer, KDE Plasma widgete), jasno ćete vidjeti ovo ponašanje: vrlo visoki vrhunci u pisanju nakon kojih slijede "prazni" prostori u kojima jedva da išta pišeUpravo su ti razmaci između rafala ono što se prevodi u duga vremena čekanja i osjećaj potpune sporosti.

Nadalje, ovo se odnosi na još jedan klasičan problem: kada završite s kopiranjem i želite "sigurno izbaciti" USB pogon, sustav vam kaže da pričekate jer se podaci još uvijek zapisuju. Ovo nije greška; to znači da Dio sadržaja je još uvijek u predmemoriji i još nije fizički stigao na uređaj.Ako u tom trenutku prekinete vezu, riskirate oštećenje datoteka.

Jedan od ključeva za ubrzavanje prijenosa je smanjenje tih beskorisnih praznina između nizova pisanja i ispiranje predmemorije od strane kernela. prije nego što se potpuno napuni, na kontinuiraniji i predvidljiviji načinOvdje do izražaja dolazi nekoliko parametara podsustava virtualne memorije.

Prilagodite vm.dirty_* i ostale parametre za spore USB pogone

Prilikom kopiranja na USB pogon, posebno ako je formatiran u NTFS-u ili FAT-u, važno je razumjeti detalje određenih vrijednosti kernela i kako to učiniti. omogući predmemoriranje pisanja na vanjskim diskovima To može napraviti značajnu razliku. Postoje dva vrlo važna parametra: vm.dirty_bytes i vm.dirty_background_byteskoji definiraju koliko se predmemorija pisanja može povećati prije nego što je sustav počne brisati na disk.

  Kako otvoriti DOCX dokumente bez korištenja Worda

Korištenjem naredbi kao što su:

echo $((120*1024*1024)) > /proc/sys/vm/dirty_bytes
echo $((60*1024*1024)) > /proc/sys/vm/dirty_background_bytes

Govorimo kernelu da, kada podaci koji čekaju na zapisivanje dosegnu te veličine (na primjer, 120 MB i 60 MB), Nemojte čekati da popunite memoriju; počnite ih prebacivati ​​ranije.To smanjuje praznine između rafala koje su se vidjele na monitoru diska i čini prijenos glatkijim.

Ova prilagodba je posebno uočljiva na USB pogonima s NTFS-om, iako nije čarobno rješenje: fizička ograničenja uređaja i dalje diktirajuOno što se postiže jest izbjegavanje ciklusa punog ubrzanja i potpunog kočenja koji pogoršavaju iskustvo i iskrivljuju statistiku brzine.

Za pogone s izvornim Linux datotečnim sustavima poput EXT4, možete ići korak dalje i prilagoditi vrijeme aktivacije procesa pisanja, definirano pomoću vm.dirty_writeback_centisecs i vm.dirty_expire_centisecsPrema zadanim postavkama, obično imaju vrijednosti osmišljene da ne kažnjavaju sustav, ali se mogu prilagoditi.

Na primjer:

sysctl -w vm.dirty_writeback_centisecs=30
sysctl -w vm.dirty_expire_centisecs=500

To smanjuje učestalost kojom kernel ozbiljno radi, pražnjeći prljavu predmemoriju na disk. dodatno smanjivanje jaza između rafala pisanjaU praktičnom smislu, graf ulazno/izlaznih operacija izgleda punije i manje isprekidano, a velike kopije se dovršavaju za kraće vrijeme.

Ako želite da ove promjene budu trajne i da se ne izgube nakon ponovnog pokretanja, možete dodati u datoteku /etc/sysctl.conf unosi kao što su:

vm.dirty_bytes=125829120
vm.dirty_background_bytes=62914560
vm.dirty_writeback_centisecs=30
vm.dirty_expire_centisecs=500

Na ovaj način vaš će sustav uvijek započeti s ovim agresivnijim parametrima pisanja, što je korisno na strojevima koji često kopiraju podatke na USB pogone ili spore diskove. To se prevodi u mnogo manje očajno iskustvo..

Keširanje pisanja i performanse u Linuxu

Utjecaj poboljšanja kernela na I/O operacije

Zajednica koja je razvila kernel godinama je usavršavala I/O podsustav tako da, čak i u ekstremnim scenarijima (masivno kopiranje na spore diskove, sustavi s malo RAM-a itd.), Cijela radna površina neće biti zaključana, a aplikacije poput preglednika neće se zamrznuti.U novijim verzijama kernela uvedeni su mehanizmi upravo kako bi se spriječilo da procesi pisanja zauzmu previše memorije i CPU-a.

Između ostalog, radilo se na ograničavanju broja memorijskih stranica koje mogu ostati u "prljavom" stanju u bilo kojem trenutku i na određivanju prioriteta prijenosa te memorije na disk. To je posebno uočljivo kada kopirate na uređaj formatiran u FAT32 ili NTFS-u i istovremeno želite nastaviti nesmetano koristiti sustav.

U prethodnim jezgrama bilo je uobičajeno da prilikom premještanja nekoliko gigabajta na jeftin USB pogon, Grafičko okruženje bi se praktički zamrznulo na duge sekunde.S novijim verzijama i razumnim postavkama parametara memorije, ovaj je učinak uvelike smanjen, što proces kopiranja čini manje invazivnim.

Nadalje, u Linux ekosustavu se stalno pojavljuju alati i uslužni programi za analizu performansi predmemorije, CPU-a i diskovnih podsustava, kao što su performanse C2C-aTo vam omogućuje da vidite obrasce korištenja predmemorije u modernim procesorima i otkrijete uska grla. Iako su ovi alati više usmjereni na razvojne programere i napredne administratore, oni pomažu u daljnjem poboljšanju iskustva u visokoučinkovitim okruženjima.

Sav ovaj rad nadopunjen je specifičnim optimizacijama za platforme poput ARM-a i sve boljom podrškom za raznolik hardver. Ukratko, iako još uvijek ima prostora za poboljšanje, Situacija u vezi s performansama ulazno/izlaznih operacija u Linuxu daleko je od jednostavnog "neispravljenog buga".Umjesto toga, to je ravnoteža između sirovih performansi, stabilnosti i odzivnosti sustava.

Praktične strategije za ubrzavanje vrlo velikih kopija

Osim podešavanja parametara kernela, postoji nekoliko praktičnih trikova koje svaki korisnik može primijeniti drastično smanjiti vrijeme prijenosa velikih količina podataka, kako u lokalnim kopijama tako i preko mreže.

Jedan od najučinkovitijih, posebno kada se radi s tisućama srednjih ili velikih datoteka, je prvo komprimirati podatke na izvoru, a zatim prenijeti jednu veliku datoteku na spori disk. Na primjer, ako želite napraviti sigurnosnu kopiju svoje medijske biblioteke (Plex, fotografije, videozapisi itd.), možete stvoriti komprimiranu tar datoteku:

tar -czf backup-plex.tar.gz /ruta/a/tu/mediateca

Nakon što je kreirate, kopirajte tu tar.gz datoteku na USB pogon ili udaljeni poslužitelj. Jedan korisnik koji je imao stalno sporo kopiranje na USB tvrdi disk otkrio je da slijedeći ovaj pristup (kompresija, premještanje i dekompresija na odredištu), Ušteda vremena bila je nevjerojatna. nasuprot rsync premještanju direktorija jedan po jedan.

Ovo posebno dobro funkcionira ako je vaš izvorni disk brz (na primjer, interni NVMe) i usko grlo je na odredišnom disku ili mreži. Komprimiranje na brzom disku obično je puno brže od kontinuiranog pisanja na spori, pa Premještanje jedne velike datoteke smanjuje opterećenje tisuća otvaranja/zatvaranja datoteka. i znatno poboljšava efektivnu propusnost.

  Kako koristiti QTTabBar za kartice i dvostruki prikaz u Exploreru

U području mrežnih prijenosa između Linux strojeva, možete puno dobiti igranjem s alatima za kompresiju "u hodu" poput scp ili rsync, odlučivši se za Prijenos datoteka pomoću Snapdropaili čak promjena SSH algoritma šifriranja na lakši kada je CPU ograničavajući faktor, a ne mreža.

Kopiranje preko mreže s SCP-om: sintaksa i ključne opcije

Kada trebate premjestiti podatke između poslužitelja (ili između računala i poslužitelja), naredba scp To je jedna od najjednostavnijih i najčešćih metoda. SCP se oslanja na SSH za uspostavljanje šifrirane veze od točke do točke, tako da datoteke putuju zaštićene bez potrebe za postavljanjem dodatnih usluga poput FTP-a.

Osnovna sintaksa je vrlo slična naredbi cp Iz Unixa samo dodajete odredišnog korisnika i host. Na primjer, za prijenos lokalne datoteke na udaljeni poslužitelj:

scp archivo-local.tar usuario@servidor:/ruta/de/destino/

Ova naredba će kopirati local-file.tar na navedenu putanju na udaljenom hostu, tražeći korisničku lozinku (ili koristeći SSH ključ ako ste ga konfigurirali). Da biste učinili suprotno, prenesite datoteku s poslužitelja na svoje računalo:

scp usuario@servidor:/ruta/remota/archivo.tgz archivo-en-local.tgz

U ovom slučaju, bit će preuzeto Datoteka .tgz bit će preuzeta s poslužitelja i spremljena kao file-on-local.tgz. na vašem računalu. Ako želite kopirati cijele direktorije sa svim njihovim sadržajem, morate uključiti rekurzivnu opciju:

scp -r carpeta/ usuario@servidor:/ruta/destino/

Ova jednostavna sintaksa jedan je od razloga zašto mnogi administratori preferiraju SCP u odnosu na složenije alternative kada im je potrebno samo premjestiti podatke bez dodatnih komplikacijaNadalje, korištenjem SSH-a ne morate postavljati dodatne usluge ili otvarati nove portove za internet.

Ubrzajte mrežne prijenose pomoću SCP-a (-C, -c, -l, -P…)

Naredba scp nudi niz opcija koje, ako se pravilno koriste, mogu znatno poboljšati performanse i kontrolu propusnosti i sigurnost veze. Najzanimljiviji u kontekstu ubrzanja prijenosa su sljedeći.

Izbor -C Aktivira kompresiju podataka u hodu. Na relativno sporim vezama (na primjer, udaljena veza od samo nekoliko Mbps), kompresija podataka prije slanja može napraviti razliku reda veličine. Postoje izmjereni slučajevi s datotekom od oko 93 MB gdje je vrijeme kopiranja bez kompresije bilo oko 1661 sekundi, dok je s -C palo je na oko 162 sekunde, oko deset puta brže.

Međutim, kompresija pomaže samo ako podaci već nisu komprimirani. Primjeri uključuju ZIP datoteke, RAR datoteke, ISO datoteke, JPEG slike itd. Jedva se poboljšavaju s -C, a mogu se čak i malo pogoršati zbog dodatne upotrebe CPU-a. Za velike tekstualne skupove, nekomprimirane baze podataka, zapisnike ili binarne datoteke, može biti izvrstan alat.

Izbor -c To vam omogućuje odabir SSH algoritma za šifriranje koji će se koristiti tijekom prijenosa. Zadana vrijednost je obično AES-128, što nudi dobru ravnotežu između sigurnosti i performansi. Međutim, ako iz razloga kompatibilnosti želite koristiti nešto drugo, možete navesti, na primjer:

scp -c 3des archivo usuario@servidor:/ruta/

Morate paziti da ne zbunite -c (šifra) s -C (kompresija), budući da rade potpuno različite stvari. Promjena enkripcije rijetko dramatično ubrzava stvari na modernim strojevima, ali Može imati utjecaj na stariji hardver ili hardver s vrlo ograničenim CPU-om..

Kako biste izbjegli preopterećenje mreže prilikom izrade vrlo velikih kopija, imate -lšto ograničava propusnost koju scp koristi u kilobitima po sekundi. Na primjer:

scp -l 400 archivo usuario@servidor:/ruta/

Utvrđuje teoretski maksimum od oko 50 KB/s (imajte na umu da 8 bitova = 1 bajt). To je korisno kada automatizirate noćne sigurnosne kopije ili imate druge usluge za koje ne želite da ostanu bez propusnosti dok izvodite veliku sigurnosnu kopiju.

Kada SSH poslužitelj sluša na nestandardnom portu, to možete naznačiti pomoću -P (velikim slovom, jer se malim slovom -p već koristi za nešto drugo). Na primjer, ako je usluga na portu 2249:

scp -P 2249 archivo usuario@servidor:/ruta/

Konačno, postoje i druge korisne opcije kao što su -p kako bi se sačuvala vremena modifikacije i dozvole, -v za pregled informacija o otklanjanju pogrešaka (procijenjena brzina, SSH poruke o otklanjanju pogrešaka itd.) ili -q Za skrivanje mjerača napretka i nekritičnih poruka, što je korisno u skriptama gdje ne želite šum u izlazu.

Sigurne sigurnosne kopije putem proxyja i naprednih SSH konfiguracija

U mnogim tvrtkama, pristup udaljenim poslužiteljima obavlja se putem HTTP proxyja ili sličnog. Izvorno, scp ne "razgovara" sam s proxyjemMeđutim, SSH klijenta možete konfigurirati da koristi alate poput corkscrew-a za tuneliranje veze.

Tipičan tijek rada bio bi stvaranje datoteke ~/.ssh/config s potrebnim direktivama za SSH za povezivanje s proxyjem (na primjer, u 10.0.96.6:8080) i autentificirati se prolaskom kroz datoteku ~/.ssh/proxyauth koji sadrži korisničko ime i lozinku u običnom tekstu. Nakon toga, scp pozivi rade transparentno, kao da proxy ne postoji, sve dok je instaliran binarni fajl corkscrew.

  Kako automatski pokrenuti računalo kada ga priključite: BIOS, Windows, Linux, WOL i hardver

U okruženjima gdje se često prebacujete između korporativne mreže (s proxyjem) i neograničenih javnih mreža, stalno uređivanje postavki je nezgodno. Tu ova opcija dobro dođe. -F scp, koja omogućuje korištenje alternativne SSH konfiguracijske datoteke:

scp -F ~/.ssh/config-empresa archivo usuario@servidor:/ruta/

Na taj način možete imati različite konfiguracijske datoteke ovisno o okruženju, a istovremeno održavati ista sintaksa kao scp i bez ludovanja pri stalnom mijenjanju parametara.

Odaberite između SCP-a i SFTP-a ovisno o vašim potrebama

I SCP i SFTP koriste isti stup: SSH protokol za šifriranje i autentifikacijuMeđutim, ne ponašaju se na isti način niti su dizajnirani za potpuno istu svrhu, te je važno biti svjestan toga kako bi se u svakom slučaju odabrao pravi alat.

SCP se ističe svojom jednostavnošću: sintaksa je gotovo identična cpDizajniran je isključivo i jednostavno za kopiranje datoteka s jednog mjesta na drugo I ne zamara se drugim detaljima. Lagan je i vrlo učinkovit za velike sekvencijalne prijenose, s minimalnim opterećenjem i bez dodatnih slojeva protokola.

SFTP je, s druge strane, mnogo potpuniji podsustav. Omogućuje pregledavanje direktorija, popisivanje sadržaja, promjena dozvola, brisanje datoteka itd.SFTP nudi slično iskustvo kao FTP, ali sa sigurnošću SSH-a. Mnogi grafički alati (poput klijenata "sličnih FTP-u") oslanjaju se na SFTP kako bi pružili poznato sučelje manje tehnički potkovanim korisnicima.

Cijena te dodatne funkcionalnosti je da SFTP obično troši više resursa i može biti nešto sporiji od SCP-a za velike linearne prijenose, posebno pri radu s mnogo malih datoteka. Unatoč tome, za interaktivnu upotrebu ili kada želite "udaljeni preglednik", SFTP je obično najpogodnija opcija.

Kao opće pravilo: ako vam je potrebno jednostavno sigurno i brzo izbacivanje velikih datotekaSCP je obično najbolja opcija. Međutim, ako želite upravljati strukturom udaljenog direktorija, mijenjati dozvole ili preferirati sučelje slično FTP-u, SFTP je bolji izbor.

Objavite web stranicu ili premjestite projekte pomoću SCP-a

Korištenje scp-a nije ograničeno na povremeno kopiranje nekoliko datoteka. Mnogi programeri ga koriste svakodnevno za postavljanje web stranica, prijenos verzija aplikacija ili sinkronizaciju projekata između vašeg lokalnog računala i VPS-a ili namjenskog servera.

Zamislite da imate spremnu statičku web stranicu /home/usuario/mi-web/ i poslužitelj kojem pristupate kao root na IP adresi 123.45.67.89Za prijenos cijelog sadržaja u direktorij gdje Apache ili Nginx poslužuje web-stranicu (/var/www/html/ (u mnogim slučajevima), mogli biste pokrenuti:

scp -r /home/usuario/mi-web/* root@123.45.67.89:/var/www/html/

Indikator -r Ovo kopira sve poddirektorije i datoteke, čuvajući strukturu. Ako koristite autentifikaciju privatnim ključem umjesto lozinke, možete dodati -i Za određivanje ključnog puta:

scp -i /ruta/a/tu_clave.pem -r /home/usuario/mi-web/* root@123.45.67.89:/var/www/html/

Nakon prijenosa, jednostavno se prijavite na poslužitelj putem SSH-a i provjerite jesu li datoteke na ispravnoj lokaciji koristeći nešto poput:

ssh root@123.45.67.89
ls -l /var/www/html/

i provjerite ima li web poslužitelj dopuštenja za njihovo čitanje. S domenom koja upućuje na VPS IP adresu putem DNS-a, Vaša stranica će biti objavljena za nekoliko sekundiOva kombinacija SSH + SCP daje vrlo finu kontrolu nad serverom i izbjegava ovisnost o nefleksibilnim FTP panelima ili klijentima.

Grafičke alternative u Windowsima: WinSCP i pscp

Ako radite iz Windowsa, ali vaši serveri su Linux, niste vezani ni za komandnu liniju. Alati poput WinSCP Nude jednostavno grafičko sučelje za prijenos datoteka putem SCP-a ili SFTP-a, s panelima u stilu preglednika datoteka koji olakšavaju povlačenje i ispuštanje.

S druge strane, poznati SSH klijent PuTTY uključuje pscp`scp` je konzolni uslužni program vrlo sličan `scp`-u koji možete koristiti u skriptama ili iz Windows naredbenog retka. Sintaksa je slična, što olakšava prijenos vaših uobičajenih Linux naredbi u ovo okruženje.

U oba slučaja, princip je isti: Iskoristite SSH enkripciju za siguran prijenos podatakaBez obzira koristite li Linux, macOS ili Windows, i bez potrebe za omogućavanjem manje sigurnih usluga poput klasičnog FTP-a.

Uzevši sve u obzir, razumijevanje načina rada predmemorije za pisanje kernela, podešavanje nekoliko parametara vm.dirty_*, odabir pravog alata za kopiranje (scp, rsync, SFTP, predkompresija) i, kada je potrebno, korištenje grafičkih rješenja poput WinSCP-a, omogućuje vam prijelaz s beskonačnih i naizgled blokiranih kopija na puno glatkiji, predvidljiviji tijek rada koji je bliži stvarnim maksimalnim performansama vašeg hardvera i mreže.

Omogućite keširanje pisanja na vanjskim diskovima kako biste ubrzali prijenose
Povezani članak:
Kako omogućiti keširanje pisanja na vanjskim diskovima i ubrzati prijenose