Hur man snabbar upp filöverföringar i Linux

Senaste uppdateringen: 23/02/2026
Författare: Isaac
  • Kärnans skrivcache och parametrarna vm.dirty_* har ett avgörande inflytande på den upplevda kopieringshastigheten i Linux.
  • Att justera minnesinställningar och utnyttja förkomprimering minskar den tid det tar att kopiera stora filer till långsamma diskar.
  • SCP-kommandot möjliggör säkra och effektiva överföringar, med alternativ som -C, -lo och -P för att optimera prestanda och bandbreddskontroll.
  • Att välja mellan SCP och SFTP, och kombinera konsol- och grafiska verktyg, ger flexibilitet att snabbt flytta filer i olika miljöer.

Snabba upp filöverföringar i Linux

Om du använder Linux dagligen är det mycket troligt att du har stirrat på en skärm någon gång. Förloppsindikatorn är ständigt långsam när man kopierar stora filer.Oavsett om det är till en USB-enhet, en annan server över nätverket eller mellan interna enheter är överföringshastigheten otroligt snabb. Samtidigt, på samma hårdvara, startar du upp Windows och allt går i 60-80 MB/s. Känslan är frustrerande och ger intrycket att Linux är "långsamt" på att flytta data.

Verkligheten är mycket mer nyanserad: systemet fungerar annorlunda, Kärnan använder aggressiva skrivcacher; det finns konservativa standardparametrar.Och typen av filsystem, kopieringsmetoden och till och med anslutningskrypteringen spelar också roll. Att förstå vad som händer "under huven" gör att du kan finjustera systemet och komma mycket närmare den prestanda du ser på andra system.

Varför verkar filkopieringar i Linux så långsamma?

Ett av de vanligaste klagomålen är den enorma skillnaden mellan den upplevda hastigheten i Linux och i Windows. när man kopierar många gigabyte (eller terabyte) till en extern USB-enhetDet finns användare som rapporterar verkliga fall: på Windows uppnår samma externa hårddisk stabila 60-80 MB/s, medan kopieringen på Linux börjar starkt och snart sjunker till 2-10 MB/s, vilket gör att överföring av flera terabyte tar bara några dagar, inte timmar.

I andra scenarier, till exempel när man överför en samling videor på 1 till 3 GB mellan två Linux-servrar, kan siffror på cirka 20 MB/s med rsync jämfört med 100 MB/s med Samba från en Windows-maskin som mellanhand. Vid första anblicken verkar det kontraintuitivt: rsync är effektivt, går över SSH och borde i teorin vara det snabbaste alternativet.

Allt detta skapar intrycket av att det finns en ihållande bugg i kärnan som gör det omöjligt att använda Linux för stora säkerhetskopior. I verkligheten orsakas dessa situationer av en kombination av faktorer: skrivcache, minnesundersystemparametrar, USB-funktioner, filsystemtyp och använda verktygGenom att justera varje del kan vi förbättra prestandan avsevärt.

Dessutom är det viktigt att förstå att i Linux återspeglar hastigheten som visas i kopieringsdialogrutan eller förloppsindikatorn inte alltid vad som händer på disken. Först kopieras den till RAM-minnet, sedan flashas den till enheten i skurkar.Och det orsakar toppar, pauser och den där irriterande känslan av att "det har frusit".

Optimera stora kopior i Linux

Kärnans skrivcache: den uppenbara verkliga boven i dramat

Linux förlitar sig starkt på RAM för att buffra diskoperationer. När du kopierar data till en långsam hårddisk, till exempel en USB-hårddisk eller flash-enhetSystemet skriver inte allt till enheten omedelbart. Först lagrar det det i cachen (smutsigt minne) och när vissa villkor är uppfyllda börjar det överföra informationen i bakgrunden.

Detta skapar en vilseledande effekt: kopieringen startar i full hastighet, förloppsindikatorn stiger mycket snabbt, och sedan plötsligt verkar det grafiska gränssnittet frysa i minuter. I verkligheten, Cachen är full och nu tömmer kärnan ryckigt minnet i USB-enheten.samtidigt som man försöker säkerställa att utrustningen förblir användbar för andra uppgifter.

Om du använder en diskmonitor (till exempel KDE Plasma-widgetarna) kommer du tydligt att se detta beteende: mycket höga toppar i skrift följt av "tomma" utrymmen där knappt någonting är skrivetDet är just dessa mellanrum mellan utbrotten som leder till långa väntetider och en känsla av total långsamhet.

Dessutom relaterar detta till ett annat klassiskt problem: när du är klar med kopieringen och vill "mata ut" USB-enheten på ett säkert sätt, säger systemet att du ska vänta eftersom data fortfarande skrivs. Detta är inte en bugg; det betyder att En del av innehållet finns fortfarande i cachen och har ännu inte fysiskt anlänt till enheten.Om du kopplar bort anslutningen i det ögonblicket riskerar du att skada filer.

En av nycklarna till att påskynda överföringar är att minska de onödiga mellanrummen mellan skrivutbrott och låta kärnan tömma cachen. innan den fylls upp helt, på ett mer kontinuerligt och förutsägbart sättDet är här flera parametrar i det virtuella minnessystemet kommer in i bilden.

Justera vm.dirty_* och andra parametrar för långsamma USB-enheter

När du kopierar till ett USB-minne, särskilt om det är formaterat i NTFS eller FAT, är det viktigt att förstå detaljerna kring vissa kärnvärden och hur man gör detta. aktivera skrivcachelagring på externa hårddiskar Det kan göra en betydande skillnad. Det finns två mycket viktiga parametrar: vm.dirty_bytes och vm.dirty_background_bytessom definierar hur mycket skrivcachen kan växa innan systemet börjar spola den till disken.

  Så här fixar du felet "Okänd databasformat" i Access

Med hjälp av kommandon som:

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

Vi säger till kärnan att när data som väntar på att skrivas når dessa storlekar (till exempel 120 MB och 60 MB), Vänta inte tills minnet är fullt; börja överföra dem tidigare.Detta minskar mellanrummen mellan bursts som sågs på diskmonitorn och gör överföringen smidigare.

Denna justering är särskilt märkbar på USB-enheter med NTFS, även om det inte är en mirakellösning: enhetens fysiska begränsningar dikterar fortfarandeDet som uppnås är att man undviker de cykler av full acceleration och fullständig inbromsning som försämrar upplevelsen och snedvrider hastighetsstatistiken.

För hårddiskar med inbyggda Linux-filsystem som EXT4 kan du gå ett steg längre och justera aktiveringstiderna för skrivprocesser, definierade av vm.dirty_writeback_centisecs och vm.dirty_expire_centisecsSom standard har de vanligtvis värden som är utformade för att inte bestraffa systemet, men de kan justeras.

Till exempel:

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

Detta minskar frekvensen med vilken kärnan arbetar seriöst, vilket tömmer den smutsiga cachen till disken. ytterligare minska klyftan mellan skrivutbrottI praktiken ser I/O-grafen fylligare och mindre hackig ut, och stora kopior slutförs på kortare tid.

Om du vill att dessa ändringar ska vara permanenta och inte gå förlorade vid omstart kan du lägga till i filen /etc/sysctl.conf inlägg som:

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

På så sätt kommer ditt system alltid att starta med dessa mer aggressiva skrivparametrar, vilket är användbart på maskiner som ofta kopierar data till USB-enheter eller långsamma diskar. Detta leder till en mycket mindre desperat upplevelse..

Skrivcachning och prestanda i Linux

Inverkan av kärnförbättringar på I/O-operationer

Kärngemenskapen har ägnat år åt att förfina I/O-undersystemet så att även i extrema scenarier (massiva kopior till långsamma diskar, system med lite RAM, etc.), Hela skrivbordet kommer inte att vara låst, och program som webbläsaren kommer inte att frysa.I senare kärnversioner har mekanismer introducerats just för att förhindra att skrivprocesser tar upp för mycket minne och CPU.

Bland annat har arbete gjorts för att begränsa antalet minnessidor som kan förbli i ett "smutsigt" tillstånd samtidigt och för att prioritera överföringen av det minnet till disken. Detta är särskilt märkbart när du kopierar till en enhet formaterad i FAT32 eller NTFS och samtidigt vill fortsätta använda systemet smidigt.

I tidigare kärnor var det vanligt att när man flyttade flera gigabyte till en billig USB-enhet, Den grafiska miljön skulle praktiskt taget frysa i långa sekunder.Med nyare versioner och rimliga minnesparameterinställningar minskas denna effekt kraftigt, vilket gör kopieringsprocessen mindre invasiv.

Dessutom dyker det ständigt upp verktyg och hjälpmedel för att analysera prestandan hos cacheminne, CPU och diskundersystem i Linux-ekosystemet, såsom perfekt c2cDetta låter dig se cacheanvändningsmönster i moderna processorer och upptäcka flaskhalsar. Även om dessa verktyg är mer inriktade på utvecklare och avancerade administratörer, hjälper de till att ytterligare förfina upplevelsen i högpresterande miljöer.

Allt detta arbete kompletteras av specifika optimeringar för plattformar som ARM och av allt bättre stöd för olika typer av hårdvara. Kort sagt, även om det fortfarande finns utrymme för förbättringar, Situationen gällande I/O-prestanda i Linux är långt ifrån en enkel "oåtgärdad bugg".Det är snarare en balans mellan rå prestanda, stabilitet och systemrespons.

Praktiska strategier för att snabba upp mycket stora kopior

Utöver att justera kärnparametrar finns det flera praktiska knep som alla användare kan använda drastiskt minska överföringstiden för stora mängder data, både i lokala kopior och över nätverket.

En av de mest effektiva, särskilt när man hanterar tusentals medelstora eller stora filer, är komprimera data vid källan först och överför sedan en enda stor fil till den långsamma hårddisken. Om du till exempel vill säkerhetskopiera ditt mediebibliotek (Plex, foton, videor etc.) kan du skapa en komprimerad tar-fil:

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

När den skapats, kopiera tar.gz-filen till USB-enheten eller fjärrservern. En användare som upplevde ständigt långsam kopiering till en USB-hårddisk upptäckte att genom att följa denna metod (komprimera, flytta och dekomprimera vid destinationen), Tidsbesparingarna var otroliga. kontra rsync att flytta kataloger en efter en.

Detta fungerar särskilt bra om din källdisk är snabb (till exempel en intern NVMe) och flaskhalsen finns på destinationsdisken eller nätverket. Att komprimera på den snabba disken är vanligtvis mycket snabbare än att kontinuerligt skriva till den långsamma, så Att flytta en enda stor fil minskar kostnaden för tusentals filöppningar/stängningar. och förbättrar den effektiva genomströmningen avsevärt.

  Så här bläddrar och redigerar du .mui-filer i Windows

Inom nätverksöverföringar mellan Linux-maskiner kan man också vinna mycket genom att experimentera med "on-the-fly"-komprimering av verktyg som scp eller rsync, väljer Överför filer med Snapdropeller till och med ändra SSH-krypteringsalgoritmen till en lättare när processorn är den begränsande faktorn och inte nätverket.

Kopiering över ett nätverk med SCP: syntax och nyckelalternativ

När du behöver flytta data mellan servrar (eller mellan din dator och en server), kommandot scp Det är en av de enklaste och vanligaste metoderna. SCP använder SSH för att upprätta en krypterad punkt-till-punkt-anslutning, så filer transporteras skyddat utan behov av att konfigurera ytterligare tjänster som FTP.

Grundsyntaxen är mycket lik kommandots cp Från Unix lägger du bara till destinationsanvändaren och värden. Till exempel, för att ladda upp en lokal fil till en fjärrserver:

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

Det här kommandot kommer att kopiera local-file.tar till den angivna sökvägen på fjärrdatorn, och frågar efter användarlösenordet (eller använder din SSH-nyckel om du har konfigurerat den). För att göra motsatsen, hämta en fil från servern till din maskin:

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

I det här fallet kommer den att laddas ner Filen.tgz kommer att laddas ner från servern och sparas som file-on-local.tgz. på din maskin. Om du vill kopiera hela kataloger med allt deras innehåll måste du inkludera det rekursiva alternativet:

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

Denna enkla syntax är en av anledningarna till att många administratörer föredrar SCP framför mer komplexa alternativ när de bara behöver flytta data utan ytterligare komplikationerDessutom, genom att använda SSH, behöver du inte konfigurera extra tjänster eller exponera nya portar för internet.

Gör nätverksöverföringar snabbare med SCP (-C, -c, -l, -P…)

scp-kommandot erbjuder ett antal alternativ som, när de används korrekt, kan förbättrar både prestanda och bandbreddskontroll avsevärt och anslutningssäkerhet. De mest intressanta i samband med att snabba upp överföringar är följande.

Alternativet -C Den aktiverar datakomprimering i realtid. På relativt långsamma länkar (till exempel en fjärranslutning på bara några få Mbps) kan komprimering av data innan den skickas göra en enorm skillnad. Det finns uppmätta fall med en fil på cirka 93 MB där kopieringstiden utan komprimering var cirka 1661 sekunder, medan med -C den sjönk till cirka 162 sekunder, ungefär tio gånger snabbare.

Komprimering hjälper dock bara om informationen inte redan är komprimerad. Exempel inkluderar ZIP-filer, RAR-filer, ISO-filer, JPEG-bilder etc. De förbättras knappt med -C och kan till och med förvärras något på grund av den extra CPU-användningen. För stora textmängder, okomprimerade databaser, loggar eller binärfiler kan det vara ett utmärkt verktyg.

Alternativet -c Detta låter dig välja vilken SSH-krypteringsalgoritm som ska användas under överföringen. Standardvärdet är vanligtvis AES-128, vilket ger en bra balans mellan säkerhet och prestanda. Men om du av kompatibilitetsskäl vill använda något annat kan du ange, till exempel:

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

Du måste vara försiktig så att du inte förvirrar -c (chiffer) med -C (komprimering), eftersom de gör helt olika saker. Att ändra kryptering snabbar sällan upp saker dramatiskt på moderna maskiner, men Det kan påverka äldre eller mycket CPU-begränsad hårdvara..

För att undvika att överbelasta nätverket när du gör mycket stora kopior måste du -lvilket begränsar bandbredden som används av scp i kilobit per sekund. Till exempel:

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

Den etablerar ett teoretiskt maximum på cirka 50 KB/s (kom ihåg att 8 bitar = 1 byte). Detta är användbart när du automatiserar nattliga säkerhetskopior eller har andra tjänster som du inte vill ska få slut på bandbredd medan du kör en stor säkerhetskopia.

När SSH-servern lyssnar på en icke-standardiserad port kan du indikera detta med -P (versaler, eftersom gemener -p redan används för något annat). Till exempel, om tjänsten är på port 2249:

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

Slutligen finns det andra användbara alternativ som t.ex. -p för att bevara ändringstider och behörigheter, -v för att visa felsökningsinformation (uppskattad hastighet, SSH-felsökningsmeddelanden etc.) eller -q För att dölja förloppsmätaren och icke-kritiska meddelanden, vilket är användbart i skript där du inte vill ha brus i utdata.

Säkra säkerhetskopior via proxy och avancerade SSH-konfigurationer

I många företag hanteras åtkomst till fjärrservrar via en HTTP-proxy eller liknande. Inbyggt, scp "pratar" inte med proxyn självDu kan dock konfigurera SSH-klienten att använda verktyg som korkskruv för att tunnla anslutningen.

Det typiska arbetsflödet skulle vara att skapa en fil ~/.ssh/config med de nödvändiga direktiven för att SSH ska kunna ansluta till proxyn (till exempel i 10.0.96.6:8080) och autentisera genom att skicka via en fil ~/.ssh/proxyauth innehåller användarnamn och lösenord i klartext. Efter det fungerar scp-anrop transparent, som om proxyn inte existerade, så länge som corkscrew-binärfilen är installerad.

  Alternativ till Microsoft Intune för Linux: jämförelse, kostnader och installation

I miljöer där du ofta växlar mellan företagsnätverket (med en proxy) och obegränsade offentliga nätverk är det obekvämt att ständigt redigera inställningar. Det är här alternativet kommer väl till pass. -F scp, vilket tillåter användning av en alternativ SSH-konfigurationsfil:

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

På så sätt kan du ha olika konfigurationsfiler beroende på miljö, samtidigt som du bibehåller samma syntax som scp och utan att bli galen i att ändra parametrar om och om igen.

Välj mellan SCP och SFTP beroende på dina behov

Både SCP och SFTP använder samma pelare: SSH-protokollet för kryptering och autentiseringDe beter sig dock inte på samma sätt och är inte heller utformade för exakt samma syfte, och det är viktigt att vara medveten om detta för att välja rätt verktyg i varje enskilt fall.

SCP lyser med sin enkelhet: syntaxen är nästan identisk med cpDen är utformad enbart och enkelt för kopiera filer från en plats till en annan Och den fastnar inte i några andra detaljer. Den är lätt och mycket effektiv för stora sekventiella överföringar, med minimal overhead och inga extra protokolllager.

SFTP, å andra sidan, är ett mycket mer komplett delsystem. Det tillåter bläddra i kataloger, lista innehåll, ändra behörigheter, ta bort filer etc.SFTP erbjuder en liknande upplevelse som FTP men med säkerheten hos SSH. Många grafiska verktyg (som "FTP-liknande" klienter) förlitar sig på SFTP för att ge ett välbekant gränssnitt till mindre tekniska användare.

Kostnaden för den extra funktionen är att SFTP tenderar att förbruka mer resurser och kan vara något långsammare än SCP för stora linjära överföringar, särskilt när man arbetar med många små filer. Ändå, för interaktiv användning eller när du vill ha en "fjärrwebbläsare", SFTP är oftast det bekvämaste alternativet.

Som en allmän regel: om det du behöver är enkelt dumpa stora filer säkert och snabbtSCP är oftast det bästa alternativet. Men om du vill hantera fjärrkatalogstrukturen, ändra behörigheter eller föredra ett FTP-liknande gränssnitt är SFTP en bättre lösning.

Publicera en webbplats eller flytta projekt med SCP

Användningen av scp är inte begränsad till enstaka kopior av ett par filer. Många utvecklare använder det dagligen för distribuera webbplatser, ladda upp programversioner eller synkronisera projekt mellan din lokala dator och en VPS eller dedikerad server.

Tänk dig att du har din statiska webbplats klar /home/usuario/mi-web/ och en server som du har åtkomst till som root på IP-adressen 123.45.67.89För att ladda upp allt innehåll till katalogen där Apache eller Nginx hanterar webbplatsen (/var/www/html/ (i många fall) kan du köra:

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

Indikatorn -r Detta kopierar alla underkataloger och filer och bevarar strukturen. Om du använder autentisering med privat nyckel istället för ett lösenord kan du lägga till -i För att ange nyckelsökvägen:

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

Efter överföringen loggar du helt enkelt in på servern via SSH och verifierar att filerna finns på rätt plats med hjälp av något i stil med:

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

och verifiera att webbservern har behörighet att läsa dem. Med domänen som pekar mot VPS:ens IP-adress via DNS, Din webbplats kommer att publiceras inom några sekunderDenna kombination av SSH + SCP ger mycket fin kontroll över servern och undviker beroende av oflexibla FTP-paneler eller klienter.

Grafiska alternativ i Windows: WinSCP och pscp

Om du arbetar från Windows men dina servrar är Linux, är du inte heller bunden till kommandoraden. Verktyg som WinSCP De erbjuder ett användarvänligt grafiskt gränssnitt för att överföra filer via SCP eller SFTP, med paneler i filutforskarstil som underlättar dra-och-släpp.

Å andra sidan inkluderar den välkända SSH-klienten PuTTY pscp`scp` är ett konsolverktyg som är väldigt likt `scp` och som du kan använda i skript eller från Windows kommandotolk. Syntaxen är liknande, vilket gör det enkelt att överföra dina vanliga Linux-kommandon till den här miljön.

I båda fallen är principen densamma: Dra nytta av SSH-kryptering för att flytta data säkertOavsett om du använder Linux, macOS eller Windows, och utan att behöva aktivera mindre säkra tjänster som klassisk FTP.

Kort sagt, att förstå hur kärnans skrivcache fungerar, justera några parametrar för vm.dirty_*, välja rätt kopieringsverktyg (scp, rsync, SFTP, förkomprimering) och, vid behov, använda grafiska lösningar som WinSCP, gör att du kan gå från oändliga och till synes blockerade kopior till ett mycket smidigare, mer förutsägbart arbetsflöde som ligger närmare den verkliga maximala prestandan för din hårdvara och ditt nätverk.

Aktivera skrivcachelagring på externa hårddiskar för att snabba upp överföringar
Relaterad artikel:
Hur man aktiverar skrivcachelagring på externa hårddiskar och påskyndar överföringar