logo

rsync-kommando i Linux med eksempler

rsync eller ekstern synkronisering er et programvareverktøy for Unix-lignende systemer som effektivt synkroniserer filer og kataloger mellom to verter eller maskiner. Den ene er kilden eller den lokale verten som filene skal synkroniseres fra, den andre er den eksterne verten, som synkronisering vil finne sted på. Det er i utgangspunktet to måter rsync kan kopiere/synkronisere data:

forskjell på datoer i excel
  • Kopiering/synkronisering til/fra en annen vert over et hvilket som helst eksternt skall ssh , rsh .
  • Kopiering/synkronisering gjennom rsync daemon ved hjelp av TCP.

Rsync er kjent for sine delta-overføringsalgoritme , der den kopierer bare forskjellene mellom kildefilene som finnes i den lokale verten og de eksisterende filene i destinasjonen eller den eksterne verten.



Eksempel:

rsync local-file user@remote-host:remote-file>

Hva skjer her:

Rsync vil først bruke SSH for å koble til somuser>til ekstern vert og vil be omuser's>passord. Når den er koblet til, vil den påkalle den eksterne vertens rsync, og deretter vil de to programmene bestemme hvilke deler av den lokale filen som må kopieres slik at den eksterne filen samsvarer med den lokale. Vær oppmerksom på følgende oppførsel av rsync:



  • Filer som ikke finnes på den eksterne verten blir kopiert.
  • Filer som har blitt oppdatert vil bli synkronisert, rsync kopierer bare de endrede delene av filene til den eksterne verten.
  • filer som er nøyaktig like kopieres ikke til den eksterne verten.

Syntaks for `rsync`-kommandoen i Linux

rsync [options] source [destination]>

Alternativ tilgjengelig i `rsync`-kommandoen i Linux

Alternativer

Beskrivelse

a, –arkiv



Dette tilsvarer å bruke -rlptgoD . Arkivmodus inkluderer alle nødvendige alternativer som å kopiere filer rekursivt, bevare nesten alt (som symbolske lenker, filtillatelser, bruker- og gruppeeierskap og tidsstempler).

-v, –verbose

Som standard fungerer rsync stille. Ved å bruke et enkelt -v-alternativ får du informasjon om overførte filer og et sammendrag på slutten. Å legge til to -v-alternativer gir statusoppdateringer på delta-overføring og overhoppede filer, sammen med mer informasjon på slutten. Flere -v-alternativer brukes vanligvis for å feilsøke rsync.

-h, -menneskelest format

Utganger i et menneskelig lesbart format.

-z, -komprimere

Komprimer fildata under overføringen

Eksempler

Bruker `rsync` som en listekommando

Hvis bare kildebanen er spesifisert, er innholdet i kilden oppført i et utdataformat som ligner påls -l>.

rsync foo/>

Kommandoen ovenfor vil vise filene og katalogene som finnes i katalogen foo .

Produksjon:

Kopier/synkroniser filer og katalog lokalt

Hvis verken kilden eller destinasjonsbanen spesifiserer en ekstern vert, oppfører rsync-kommandoene seg som en kopikommando.

rsync -avh foo/ bar/>

Kommandoen ovenfor vil kopiere/synkronisere alle filene og katalogene som finnes i katalogenfoo>til katalogen bar . Hvis målkatalogen ikke er til stede (herbar>), oppretter rsync automatisk en og kopierer alle dataene i den.

Produksjon:

Rsync med ssh

Det er to forskjellige måter for rsync å kontakte et eksternt system:

  • Ved å bruke et eksternt skallprogram som transport (som f.eksssh>(Secure Shell) ellerrsh>(Eksternt skall)).
  • Kontakt en rsync-demon direkte via TCP.

Her skal vi diskutere rsync over ssh.

rsync -avhze ssh /foo user@remote-host:/tmp/>

For å spesifisere typen protokoll som skal brukes,-e>alternativet brukes.

Produksjon:

Rsync med spesielle filtillatelser

Hvis vi ønsker å synkronisere filer til den lokale eller eksterne verten med tillatelsene til filene som endres. Følgende kommando må brukes.

btree og b tree
rsync -avhe ssh --chown=USER:GROUP /foo user@remote-host:/tmp/>

Kommandoen ovenfor vil synkronisere alle filene som finnes i katalogen /foo med filene i katalogen /tmp iremote-host>med alle filene som eies av BRUKER med gruppen GROUP.

Produksjon:

Merk: Deuser>oggroup>må allerede være opprettet i den eksterne verten.

Rsync med --ignore-existing-files>

Vi kan også hoppe over de allerede eksisterende filene på destinasjonen. Dette kan vanligvis brukes når vi utfører sikkerhetskopiering ved hjelp av –link-dest alternativet, mens du fortsetter en sikkerhetskopi som ble avbrutt.

rsync --ignore-existing -avhe /foo user@remote-host:/tmp/>

Så alle filer som ikke finnes på destinasjonen vil bli kopiert over. Her har jeg slettetgeeksforgeeks>mappe fra katalogenfoo>, så den skal bare kopieregeeksforgeeks>katalog.

Merk: Dette ignorerer ikke eksisterende kataloger, ellers vil ingenting bli gjort. Selv om det er noen endringer i en fil i den lokale verten, vil den fortsatt ikke bli synkronisert hvis den finnes på den eksterne verten.

Produksjon:

Vis fremgang under overføring

For å vise fremdriften mens du overfører data fra lokal vert til ekstern vert, kan vi bruke-–progress>alternativ.

rsync -avhe ssh --progress /foo user@remote-host:/tmp/>

Når overføringen er fullført for en bestemt fil, sender rsync ut en oppsummeringslinje som vist nedenfor.

design mønstre java

Produksjon:

I bildet ovenfor, hvis vi ser på filen/foo/file2>, det forteller oss det

  • Filen var totalt 44 byte lang.
  • Gjennomsnittlig overføringshastighet for hele filen var 42,97 kilobyte per sekund i løpet av de 0:00:00 sekundene det tok å fullføre.
  • Det var den andre overføringen under strømmen rsync økt.
  • Det er 10 flere filer for den eksterne verten å sjekke (for å se om de er oppdaterte eller ikke) igjen av de totalt 13 filene i fillisten.
  • Oppdater fjernkontrollen bare hvis det er en nyere versjon på det lokale filsystemet:
    Hvis vi ønsker å kopiere filer over den eksterne verten som har blitt oppdatert mer nylig på det lokale filsystemet. Det er gjort med -Oppdater flagg. Oppførselen er nå slik:
    • Filer som ikke finnes på den eksterne verten blir kopiert.
    • Filer som finnes både på lokal og ekstern, men som har et nyere tidsstempel på den lokale verten, kopieres til den eksterne verten. (Omvendt kopieres ikke filer som har et eldre tidsstempel).

    Her har jeg gjort noen endringer i fil 1 og fil 2 , men endringene i fil 2 ble gjort nylig. Så bare fil 2 vil bli synkronisert.

    rsync -avhe ssh --progress --update /foo root@remote-host:/tmp/>

    Produksjon: rsync-oppdatering

    Slett automatisk filer fra lokal vert etter vellykket overføring

    Anta nå at vi har en webserver og en backupserver og at vi opprettet en daglig sikkerhetskopi og synkroniserte den med backupserveren vår, og så ønsker vi ikke å beholde den lokale kopien av sikkerhetskopien i webserveren vår. Så i stedet for å slette den manuelt etter vellykket overføring, kan vi bruke--remove-source-files>flagg for å automatisk slette filene fra webserveren.

    document.queryselector
    rsync -avhe ssh --remove-source-files /foo user@backup-server:/tmp>

    Produksjon:

    Merk: Dette sletter bare filene og ikke katalogene.

    Slett filene som har blitt slettet på den lokale verten

    Hvis det er noen filer som er slettet på den lokale verten og vi vil at de skal oppdateres på den eksterne verten også, må vi bruke--delete>alternativ.

    rsync -avhe ssh /foo --delete user@remote-host:/tmp/>

    Produksjon:

    Så her fil 1 , fil 2 , fil 3 ble slettet på den lokale verten, og som du kan se, er de også oppdatert i den eksterne verten.

    Merk: ` rsync` sletter ikke filene automatisk for å synkronisere katalogene på begge sider.

    Utføre en tørrkjøring med `rsync`

    En tørrkjøring får 'rsync' til å utføre en prøvekjøring som ikke gjør noen endringer og viser nesten det samme resultatet som en ekte kjøring ville gjort. Den brukes vanligvis med alternativene -v, -verbose og/eller -i, -itemize-changes for å se hva en `rsync`-kommando vil gjøre før man faktisk kjører den.

    rsync -avhe ssh --dry-run --chown=USER:GROUP /foo user@remote-host:/>

    Produksjon:

    Konklusjon

    I denne artikkelen diskuterte vi kommandoen rsync i Linux, som er et allsidig og kraftig verktøy for å synkronisere filer og kataloger mellom verter eller maskiner. Med sin delta-overføringsalgoritme og ulike alternativer tilbyr den effektiv datasynkronisering, sikkerhetskopieringsmuligheter og filoverføringsadministrasjon. Ved å mestre rsync-kommandoen kan Linux-brukere sikre filkonsistens, optimalisere dataoverføring og strømlinjeforme arbeidsflytene for databehandling.