Effektiv Kopiering af 5 Millioner Små Filer på Gigabit-Netværk: Bedste Metoder og Tips

Hvordan kopieres cirka 5 millioner små filer (5-30k) i en enkelt mappe til en anden maskine på samme gigabit-netværk uden at opleve betydelig nedgang i hastighed, som det sker med rsync?

At kopiere cirka 5 millioner små filer effektivt på et gigabit-netværk uden betydelig nedgang i hastighed kan opnås ved at bruge metoder som tar og netcat, parallel rsync, scp med tar, rsync med --whole-file flaget, eller asynkron filoverførsel med lsyncd.

Hvordan kopieres cirka 5 millioner små filer (5-30k) i en enkelt mappe til en anden maskine på samme gigabit-netværk uden at opleve betydelig nedgang i hastighed, som det sker med rsync?

At kopiere et stort antal små filer effektivt kan være udfordrende, især når man bruger værktøjer som rsync, der kan opleve betydelig nedgang i hastighed. Her er nogle alternative metoder og tips til at kopiere cirka 5 millioner små filer på et gigabit-netværk uden at opleve betydelig nedgang i hastighed:

1. Brug af Tar og Netcat

En effektiv metode er at kombinere tar og netcat (nc) for at streame filerne over netværket:


# På kilde maskinen
tar cf - /path/to/source | nc -l -p 12345

# På destination maskinen
nc source_machine_ip 12345 | tar xf - -C /path/to/destination

Denne metode pakker filerne i en enkelt strøm, hvilket reducerer overhead og forbedrer hastigheden.

2. Brug af Rsync med Parallelisme

Hvis du foretrækker at bruge rsync, kan du øge hastigheden ved at køre flere rsync-processer parallelt:


# Eksempel på et bash script til parallel rsync
for i in {1..10}; do
  rsync -avz --ignore-existing /path/to/source/ user@destination:/path/to/destination/ &
done
wait

Dette script starter 10 parallelle rsync-processer, hvilket kan forbedre hastigheden betydeligt.

3. Brug af SCP med Tar

En anden metode er at bruge scp sammen med tar for at kopiere filerne:


# På kilde maskinen
tar czf - /path/to/source | ssh user@destination "tar xzf - -C /path/to/destination"

Denne metode komprimerer filerne, hvilket kan reducere den samlede overførselstid.

4. Brug af Rsync med --whole-file Flag

Rsync's standardindstilling er at bruge delta-overførsel, hvilket kan være ineffektivt for mange små filer. Brug --whole-file flaget for at kopiere hele filer:


rsync -avz --whole-file /path/to/source/ user@destination:/path/to/destination/

Dette kan forbedre hastigheden ved at undgå delta-beregninger.

5. Brug af Asynkron Filoverførsel

Overvej at bruge asynkron filoverførsel med værktøjer som lsyncd, der kan overvåge filsystemet og synkronisere ændringer i realtid:


# Installer lsyncd og konfigurer det til at overvåge og synkronisere mappen
lsyncd -rsyncssh /path/to/source/ user@destination:/path/to/destination/

Denne metode kan reducere belastningen ved at synkronisere ændringer løbende.

Ved at anvende en af disse metoder kan du effektivt kopiere et stort antal små filer over et gigabit-netværk uden at opleve betydelig nedgang i hastighed.