Slik får du raskere filoverføringer i Linux

Siste oppdatering: 23/02/2026
Forfatter: Isaac
  • Kjernens skrivebuffer og vm.dirty_*-parametrene har en avgjørende innflytelse på den oppfattede kopieringshastigheten i Linux.
  • Justering av minneinnstillinger og bruk av forhåndskomprimering reduserer tiden det tar å kopiere store filer på trege disker.
  • SCP-kommandoen muliggjør sikre og effektive overføringer, med alternativer som -C, -lo og -P for å optimalisere ytelse og båndbreddekontroll.
  • Å velge mellom SCP og SFTP, og kombinere konsoll- og grafiske verktøy, gir fleksibilitet til å flytte filer raskt i forskjellige miljøer.

Få fart på filoverføringer i Linux

Hvis du bruker Linux daglig, er det veldig sannsynlig at du har stirret på en skjerm på et tidspunkt. Fremdriftslinjen er konstant treg når jeg kopierer store filer.Enten det er til en USB-stasjon, en annen server over nettverket, eller mellom interne stasjoner, er overføringshastigheten utrolig rask. Samtidig, på samme maskinvare, starter du opp i Windows, og alt går i 60–80 MB/s. Følelsen er frustrerende og gir inntrykk av at Linux er «treg» til å flytte data.

Virkeligheten er mye mer nyansert: systemet fungerer annerledes, Kjernen bruker aggressive skrivebuffere; det finnes konservative standardparametere.Og typen filsystem, kopieringsmetoden og til og med tilkoblingskrypteringen spiller også en rolle. Å forstå hva som skjer «under panseret» lar deg finjustere systemet og komme mye nærmere ytelsen du ser på andre systemer.

Hvorfor virker filkopieringer i Linux så trege?

En av de vanligste klagene er den enorme forskjellen mellom den opplevde hastigheten i Linux og i Windows. når du kopierer mange gigabyte (eller terabyte) til en ekstern USB-stasjonDet finnes brukere som rapporterer om virkelige tilfeller: på Windows oppnår den samme eksterne harddisken stabile 60–80 MB/s, mens på Linux starter kopieringen sterkt og faller snart til 2–10 MB/s, noe som gjør overføring av flere terabyte til et spørsmål om dager, ikke timer.

I andre scenarier, for eksempel når man overfører en videosamling på 1 til 3 GB mellom to Linux-servere, kan tall på rundt 20 MB/s med rsync versus 100 MB/s ved bruk av Samba fra en Windows-maskin som mellomledd. Ved første øyekast virker det kontraintuitivt: rsync er effektivt, går over SSH, og burde i teorien være det raskeste alternativet.

Alt dette skaper inntrykk av at det er en vedvarende feil i kjernen som gjør det umulig å bruke Linux til store sikkerhetskopier. I virkeligheten er disse situasjonene forårsaket av en kombinasjon av faktorer: skrivebuffer, parametere for minneundersystem, USB-funksjoner, filsystemtype og verktøy som brukesVed å justere hver del kan vi forbedre ytelsen betraktelig.

Videre er det viktig å forstå at i Linux gjenspeiler ikke hastigheten som vises i kopieringsdialogen eller fremdriftslinjen alltid hva som skjer på disken. Først kopieres den til RAM, deretter flashes den til enheten i bursts.Og det forårsaker topper, pauser og den irriterende følelsen av at «det er frossent».

Optimalisering av store kopier i Linux

Kjernens skrivebuffer: den tilsynelatende virkelige synderen

Linux er i stor grad avhengig av RAM for å bufre diskoperasjoner. Når du kopierer data til en treg disk, for eksempel en USB-harddisk eller flash-stasjonSystemet skriver ikke alt til enheten umiddelbart. Først lagrer det det i hurtigbufferen (skittent minne), og når visse betingelser er oppfylt, begynner det å overføre disse dataene i bakgrunnen.

Dette skaper en villedende effekt: kopieringen starter i full hastighet, fremdriftslinjen stiger veldig raskt, og så plutselig ser det ut til at det grafiske grensesnittet fryser i flere minutter. I virkeligheten, Cachen er full, og nå tømmer kjernen rykkvis minnet inn i USB-enheten.samtidig som man prøver å sikre at utstyret fortsatt er brukbart til andre oppgaver.

Hvis du bruker en diskmonitor (for eksempel KDE Plasma-widgetene), vil du tydelig se denne oppførselen: svært høye topper i skriving etterfulgt av "tomme" mellomrom der nesten ingenting er skrevetDet er nettopp disse hullene mellom utbruddene som fører til lange ventetider og en følelse av total treghet.

Videre er dette relatert til et annet klassisk problem: når du er ferdig med å kopiere og vil "ta ut" USB-stasjonen på en trygg måte, ber systemet deg vente fordi data fortsatt skrives. Dette er ikke en feil; det betyr at Noe av innholdet er fortsatt i mellomlagringen og har ennå ikke fysisk ankommet enheten.Hvis du kobler fra i det øyeblikket, risikerer du å ødelegge filer.

En av nøklene til å få fart på overføringer er å redusere de unyttige hullene mellom skriveutbrudd og få kjernen til å tømme hurtigbufferen. før den fylles helt opp, på en mer kontinuerlig og forutsigbar måteDet er her flere parametere i det virtuelle minnesubsystemet kommer inn i bildet.

Juster vm.dirty_* og andre parametere for trege USB-stasjoner

Når du kopierer til en USB-stasjon, spesielt hvis den er formatert i NTFS eller FAT, er det viktig å forstå detaljene for visse kjerneverdier og hvordan du gjør dette. aktiver skrivebuffering på eksterne disker Det kan utgjøre en betydelig forskjell. Det er to svært viktige parametere: vm.dirty_bytes og vm.dirty_background_bytessom definerer hvor mye skrivebufferen kan vokse før systemet begynner å tømme den til disk.

  Lær Linux-hemmeligheter: kommandoer, triks og spill for å mestre det

Bruk av kommandoer som:

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

Vi forteller kjernen at når dataene som venter på å bli skrevet når disse størrelsene (for eksempel 120 MB og 60 MB), Ikke vent til du har fylt opp minnet; begynn å overføre dem tidligere.Dette reduserer mellomrommene mellom serieopptak som ble sett på diskskjermen og gjør overføringen jevnere.

Denne justeringen er spesielt merkbar på USB-stasjoner med NTFS, selv om det ikke er en mirakelløsning: enhetens fysiske begrensninger dikterer fortsattDet som oppnås er å unngå de syklusene med full akselerasjon og fullstendig oppbremsing som forverrer opplevelsen og forvrenger hastighetsstatistikken.

For disker med innebygde Linux-filsystemer som EXT4, kan du gå et skritt videre og justere aktiveringstidene for skriveprosesser, definert av vm.dirty_writeback_centisecs og vm.dirty_expire_centisecsSom standard har de vanligvis verdier som er utformet for ikke å straffe systemet, men de kan justeres.

For eksempel:

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

Dette reduserer hvor ofte kjernen jobber seriøst, og tømmer den skitne hurtigbufferen til disken. ytterligere innsnevre gapet mellom skriveutbruddI praksis ser I/O-grafen fyldigere og mindre hakkete ut, og store kopier fullføres på kortere tid.

Hvis du vil at disse endringene skal være permanente og ikke gå tapt ved omstart, kan du legge til i filen /etc/sysctl.conf oppføringer som:

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

På denne måten vil systemet ditt alltid starte med disse mer aggressive skriveparametrene, noe som er nyttig på maskiner som ofte kopierer data til USB-stasjoner eller trege disker. Dette betyr en mye mindre desperat opplevelse..

Skrivebuffering og ytelse i Linux

Virkningen av kjerneforbedringer på I/O-operasjoner

Kjernemiljøet har brukt årevis på å forbedre I/O-undersystemet slik at selv i ekstreme scenarier (massive kopier til trege disker, systemer med lite RAM osv.) Hele skrivebordet vil ikke være låst, og programmer som nettleseren vil ikke fryse.I nyere kjerneversjoner har det blitt introdusert mekanismer nettopp for å forhindre at skriveprosesser bruker for mye minne og CPU.

Blant annet har det blitt jobbet med å begrense antall minnesider som kan forbli i en "skitten" tilstand til enhver tid, og å prioritere overføringen av dette minnet til disken. Dette er spesielt merkbart når du kopierer til en enhet formatert i FAT32 eller NTFS, og samtidig ønsker å fortsette å bruke systemet problemfritt.

I tidligere kjerner var det vanlig at når man flyttet flere gigabyte til en billig USB-stasjon, Det grafiske miljøet ville praktisk talt fryse i lange sekunder.Med nyere versjoner og rimelige minneparameterinnstillinger reduseres denne effekten kraftig, noe som gjør kopieringsprosessen mindre invasiv.

Videre dukker det stadig opp verktøy og hjelpemidler for å analysere ytelsen til hurtigminne, CPU og diskundersystemer i Linux-økosystemet, som for eksempel ytelse c2cDette lar deg se bruksmønstre for hurtigbuffer i moderne prosessorer og oppdage flaskehalser. Selv om disse verktøyene er mer rettet mot utviklere og avanserte administratorer, bidrar de til å forbedre opplevelsen ytterligere i miljøer med høy ytelse.

Alt dette arbeidet kompletteres av spesifikke optimaliseringer for plattformer som ARM og av stadig bedre støtte for ulik maskinvare. Kort sagt, selv om det fortsatt er rom for forbedring, Situasjonen angående I/O-ytelse i Linux er langt fra en enkel "ufikset feil".Det er snarere en balanse mellom rå ytelse, stabilitet og systemrespons.

Praktiske strategier for å fremskynde svært store kopier

Utover å finjustere kjerneparametere, finnes det flere praktiske triks som enhver bruker kan bruke redusere overføringstiden for store mengder data drastisk, både i lokale kopier og over nettverket.

En av de mest effektive, spesielt når man har med tusenvis av mellomstore eller store filer å gjøre, er komprimer dataene ved kilden først, og overfør deretter en enkelt stor fil til den trege disken. Hvis du for eksempel vil sikkerhetskopiere mediebiblioteket ditt (Plex, bilder, videoer osv.), kan du opprette en komprimert tar-fil:

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

Når den er opprettet, kopierer du tar.gz-filen til USB-stasjonen eller den eksterne serveren. En bruker som opplevde konstant treg kopiering til en USB-harddisk, oppdaget at ved å følge denne fremgangsmåten (komprimere, flytte og dekomprimere på destinasjonen), Tidsbesparelsene var utrolige. kontra rsync å flytte mapper én etter én.

Dette fungerer spesielt bra hvis kildedisken din er rask (for eksempel en intern NVMe) og flaskehalsen er på måldisken eller nettverket. Komprimering på den raske disken er vanligvis mye raskere enn kontinuerlig skriving til den trege, så Å flytte én stor fil reduserer kostnadene ved tusenvis av filåpninger/-lukkinger. og forbedrer den effektive gjennomstrømningen betraktelig.

  Slik åpner du PSDT-filer på hvilken som helst enhet

Når det gjelder nettverksoverføringer mellom Linux-maskiner, kan du også oppnå mye ved å eksperimentere med "on-the-fly"-komprimering av verktøy som scp eller rsync, velger Overfør filer med Snapdropeller til og med endre SSH-krypteringsalgoritmen til en lettere en når CPU-en er den begrensende faktoren og ikke nettverket.

Kopiering over et nettverk med SCP: syntaks og nøkkelalternativer

Når du trenger å flytte data mellom servere (eller mellom PC-en og en server), brukes kommandoen scp Det er en av de enkleste og vanligste metodene. SCP er avhengig av SSH for å etablere en kryptert punkt-til-punkt-forbindelse, slik at filer transporteres beskyttet uten behov for å sette opp tilleggstjenester som FTP.

Den grunnleggende syntaksen er veldig lik kommandoen cp Fra Unix legger du bare til målbrukeren og verten. For eksempel, for å laste opp en lokal fil til en ekstern server:

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

Denne kommandoen vil kopiere local-file.tar til den angitte banen på den eksterne verten, og ber om brukerpassordet (eller bruker SSH-nøkkelen din hvis du har konfigurert den). For å gjøre det motsatte, overfør en fil fra serveren til maskinen din:

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

I dette tilfellet vil den bli lastet ned Filen.tgz lastes ned fra serveren og lagres som file-on-local.tgz. på maskinen din. Hvis du vil kopiere hele mapper med alt innholdet, må du inkludere det rekursive alternativet:

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

Denne enkle syntaksen er en av grunnene til at mange administratorer foretrekker SCP fremfor mer komplekse alternativer når de bare trenger flytte data uten ytterligere komplikasjonerVidere, ved å bruke SSH, trenger du ikke å sette opp ekstra tjenester eller eksponere nye porter til Internett.

Gjør nettverksoverføringer raskere med SCP (-C, -c, -l, -P…)

scp-kommandoen tilbyr en rekke alternativer som, når de brukes riktig, kan forbedre både ytelse og båndbreddekontroll betraktelig og tilkoblingssikkerhet. De mest interessante i sammenheng med å øke hastigheten på overføringer er følgende.

Alternativet -C Den aktiverer datakomprimering underveis. På relativt trege koblinger (for eksempel en ekstern tilkobling på bare noen få Mbps) kan komprimering av data før sending utgjøre en betydelig forskjell. Det finnes målte tilfeller med en fil på omtrent 93 MB der kopieringstiden uten komprimering var rundt 1661 sekunder, mens med -C den falt til omtrent 162 sekunder, omtrent ti ganger raskere.

Komprimering hjelper imidlertid bare hvis dataene ikke allerede er komprimert. Eksempler inkluderer ZIP-filer, RAR-filer, ISO-filer, JPEG-bilder osv. De forbedres knapt med -C og kan til og med forverres litt på grunn av ekstra CPU-bruk. For store tekstsett, ukomprimerte databaser, logger eller binærfiler kan det være et utmerket verktøy.

Alternativet -c Dette lar deg velge SSH-krypteringsalgoritmen som skal brukes under overføringen. Standard er vanligvis AES-128, som gir en god balanse mellom sikkerhet og ytelse. Men hvis du av kompatibilitetsgrunner ønsker å bruke noe annet, kan du for eksempel spesifisere:

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

Du må være forsiktig så du ikke forvirrer -c (chiffer) med -C (komprimering), siden de gjør helt forskjellige ting. Å endre kryptering øker sjelden hastigheten dramatisk på moderne maskiner, men Det kan ha en innvirkning på eldre eller svært CPU-begrenset maskinvare..

For å unngå overbelastning av nettverket når du lager veldig store kopier, må du -lsom begrenser båndbredden som brukes av scp i kilobit per sekund. For eksempel:

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

Den etablerer et teoretisk maksimum på omtrent 50 KB/s (husk at 8 bits = 1 byte). Dette er nyttig når du automatiserer nattlige sikkerhetskopier eller har andre tjenester du ikke vil skal gå tom for båndbredde mens du kjører en stor sikkerhetskopiering.

Når SSH-serveren lytter på en ikke-standard port, kan du indikere dette med -P (store bokstaver, fordi liten -p allerede brukes til noe annet). Hvis for eksempel tjenesten er på port 2249:

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

Til slutt finnes det andre nyttige alternativer, som f.eks. -p for å bevare endringstider og tillatelser, -v for å se feilsøkingsinformasjon (estimert hastighet, SSH-feilsøkingsmeldinger osv.) eller -q For å skjule fremdriftsmåleren og ikke-kritiske meldinger, noe som er nyttig i skript der du ikke vil ha støy i utdataene.

Sikre sikkerhetskopier via proxy og avanserte SSH-konfigurasjoner

I mange selskaper håndteres tilgang til eksterne servere via en HTTP-proxy eller lignende. Naturligvis, scp "snakker" ikke med proxyen av seg selvDu kan imidlertid konfigurere SSH-klienten til å bruke verktøy som korketrekker for å tunnelere forbindelsen.

Den typiske arbeidsflyten ville være å opprette en fil ~/.ssh/config med de nødvendige direktivene for at SSH skal kunne koble til proxyen (for eksempel i 10.0.96.6:8080) og autentisere ved å sende gjennom en fil ~/.ssh/proxyauth inneholder brukernavn og passord i ren tekst. Etter det fungerer scp-kall transparent, som om proxyen ikke eksisterte, så lenge corkscrew-binærfilen er installert.

  Slik setter du opp en hjemme-NAS-server med OpenMediaVault

I miljøer der du ofte bytter mellom bedriftsnettverket (med en proxy) og ubegrensede offentlige nettverk, er det upraktisk å stadig redigere innstillinger. Det er her alternativet kommer godt med. -F scp, som tillater bruk av en alternativ SSH-konfigurasjonsfil:

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

På denne måten kan du ha forskjellige konfigurasjonsfiler avhengig av miljøet, samtidig som du opprettholder samme syntaks som scp og uten å bli gal av å endre parametere om og om igjen.

Velg mellom SCP og SFTP avhengig av dine behov

Både SCP og SFTP bruker samme søyle: SSH-protokollen for kryptering og autentiseringDe oppfører seg imidlertid ikke på samme måte, og de er heller ikke designet for nøyaktig samme formål, og det er viktig å være klar over dette for å velge riktig verktøy i hvert tilfelle.

SCP skinner for sin enkelhet: syntaksen er nesten identisk med cpDen er designet utelukkende og enkelt for kopiere filer fra ett sted til et annet Og den henger seg ikke ned i noen andre detaljer. Den er lett og svært effektiv for store sekvensielle overføringer, med minimal overhead og ingen ekstra protokolllag.

SFTP, derimot, er et mye mer komplett delsystem. Det tillater bla gjennom mapper, liste opp innhold, endre tillatelser, slette filer osv.SFTP tilbyr en lignende opplevelse som FTP, men med sikkerheten til SSH. Mange grafiske verktøy (som "FTP-lignende" klienter) er avhengige av SFTP for å gi et kjent grensesnitt til mindre tekniske brukere.

Kostnaden for den ekstra funksjonaliteten er at SFTP har en tendens til å bruke flere ressurser og kan være litt tregere enn SCP for store lineære overføringer, spesielt når man jobber med mange små filer. Likevel, for interaktiv bruk eller når du ønsker en "ekstern nettleser", SFTP er vanligvis det mest praktiske alternativet.

Som en generell regel: hvis det du trenger er enkelt dump store filer trygt og rasktSCP er vanligvis det beste alternativet. Men hvis du vil administrere den eksterne katalogstrukturen, endre tillatelser eller foretrekker et FTP-lignende grensesnitt, er SFTP et bedre alternativ.

Publiser et nettsted eller flytt prosjekter med SCP

Bruken av scp er ikke begrenset til sporadiske kopier av et par filer. Mange utviklere bruker det daglig for distribuere nettsteder, laste opp applikasjonsversjoner eller synkronisere prosjekter mellom din lokale datamaskin og en VPS eller dedikert server.

Tenk deg at du har den statiske nettsiden din klar /home/usuario/mi-web/ og en server du har tilgang til som root på IP-adressen 123.45.67.89For å laste opp alt innholdet til katalogen der Apache eller Nginx betjener nettstedet (/var/www/html/ (i mange tilfeller) kan du kjøre:

scp -r /home/usuario/mi-web/* [email protected]:/var/www/html/

Indikatoren -r Dette kopierer alle underkataloger og filer, og bevarer strukturen. Hvis du bruker privatnøkkelautentisering i stedet for et passord, kan du legge til -i For å angi nøkkelbanen:

scp -i /ruta/a/tu_clave.pem -r /home/usuario/mi-web/* [email protected]:/var/www/html/

Etter overføringen logger du bare inn på serveren via SSH og bekrefter at filene er på riktig sted ved å bruke noe slikt som:

ssh [email protected]
ls -l /var/www/html/

og bekreft at webserveren har tillatelse til å lese dem. Med domenet som peker til VPS-IP-adressen via DNS, Nettstedet ditt vil bli publisert i løpet av sekunderDenne kombinasjonen av SSH + SCP gir svært god kontroll over serveren og unngår avhengighet av ufleksible FTP-paneler eller klienter.

Grafiske alternativer i Windows: WinSCP og pscp

Hvis du jobber fra Windows, men serverne dine er Linux, er du heller ikke bundet til kommandolinjen. Verktøy som WinSCP De tilbyr et brukervennlig grafisk grensesnitt for overføring av filer via SCP eller SFTP, med paneler i filutforskerstil som forenkler dra-og-slipp.

På den annen side inkluderer den velkjente SSH-klienten PuTTY pscp`scp` er et konsollverktøy som er veldig likt `scp`, og som du kan bruke i skript eller fra Windows-ledeteksten. Syntaksen er lik, noe som gjør det enkelt å overføre vanlige Linux-kommandoer til dette miljøet.

I begge tilfeller er prinsippet det samme: Dra nytte av SSH-kryptering for å flytte data sikkertEnten du bruker Linux, macOS eller Windows, og uten å måtte aktivere mindre sikre tjenester som klassisk FTP.

Samlet sett lar det deg gå fra endeløse og tilsynelatende blokkerte kopier til en mye jevnere og mer forutsigbar arbeidsflyt som er nærmere den reelle maksimale ytelsen til maskinvaren og nettverket ditt, ved å forstå hvordan kjernens skrivebuffer fungerer, justere noen få parametere for vm.dirty_*, velge riktig kopieringsverktøy (scp, rsync, SFTP, pre-compression), og om nødvendig bruke grafiske løsninger som WinSCP.

Aktiver skrivebuffering på eksterne disker for å få fart på overføringer
Relatert artikkel:
Slik aktiverer du skrivebuffering på eksterne stasjoner og øker hastigheten på overføringer