logo

rsync kommando i Linux med eksempler

rsync eller fjernsynkronisering er et softwareværktøj til Unix-lignende systemer, der effektivt synkroniserer filer og mapper mellem to værter eller maskiner. Den ene er kilden eller den lokale vært, hvorfra filerne vil blive synkroniseret, den anden er fjernværten, hvor synkronisering vil finde sted. Der er grundlæggende to måder, hvorpå rsync kan kopiere/synkronisere data:

forskel på datoer i excel
  • Kopiering/synkronisering til/fra en anden vært over enhver ekstern shell som ssh , rsh .
  • Kopiering/synkronisering gennem rsync-dæmon ved hjælp af TCP.

Rsync er berømt for sin delta-overførselsalgoritme , hvori den kun kopierer forskellene mellem kildefilerne i den lokale vært og de eksisterende filer på destinationen eller fjernværten.



Eksempel:

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

Hvad sker der her:

Rsync vil først bruge SSH til at oprette forbindelse somuser>til fjernvært og vil bede omuser's>adgangskode. Når den er tilsluttet, vil den kalde fjernværtens rsync, og derefter bestemmer de to programmer, hvilke dele af den lokale fil, der skal kopieres, så fjernfilen matcher den lokale. Bemærk venligst følgende adfærd af rsync:



  • Filer, der ikke findes på fjernværten, kopieres.
  • Filer, der er blevet opdateret, vil blive synkroniseret, rsync kopierer kun de ændrede dele af filer til fjernværten.
  • filer, der er nøjagtigt ens, kopieres ikke til fjernværten.

Syntaks for kommandoen `rsync` i Linux

rsync [options] source [destination]>

Mulighed tilgængelig i kommandoen `rsync` i Linux

Muligheder

Beskrivelse

et, –arkiv



Dette svarer til at bruge -rlptgoD . Arkivtilstand inkluderer alle de nødvendige muligheder som at kopiere filer rekursivt, bevare næsten alt (såsom symbolske links, filtilladelser, bruger- og gruppeejerskab og tidsstempler).

-v, –udtalt

Som standard fungerer rsync lydløst. Brug af en enkelt -v-indstilling giver oplysninger om overførte filer og en oversigt til sidst. Tilføjelse af to -v-indstillinger giver statusopdateringer om delta-transmission og oversprungne filer, sammen med mere information i slutningen. Flere -v-indstillinger bruges typisk til fejlretning af rsync.

-h, -læsbart format

Output i et menneskeligt læsbart format.

-z, -komprimere

Komprimer fildata under overførslen

Eksempler

Brug af 'rsync' som en listekommando

Hvis kun kildestien er angivet, vises indholdet af kilden i et outputformat svarende tills -l>.

rsync foo/>

Ovenstående kommando viser de filer og mapper, der findes i mappen foo .

Produktion:

Kopier/synkroniser filer og mappe lokalt

Hvis hverken kilde- eller destinationsstien angiver en fjernvært, opfører rsync-kommandoerne sig som en kopikommando.

rsync -avh foo/ bar/>

Ovenstående kommando vil kopiere/synkronisere alle filer og mapper, der findes i mappenfoo>til bibliotek bar . Hvis destinationsbiblioteket ikke er til stede (herbar>), opretter rsync automatisk en og kopierer alle data i den.

Produktion:

Rsync ved hjælp af ssh

Der er to forskellige måder, hvorpå rsync kan kontakte et fjernsystem:

  • Brug af et remote shell-program som transport (f.eksssh>(Secure Shell) ellerrsh>(Remote Shell)).
  • Kontakt en rsync-dæmon direkte via TCP.

Her vil vi diskutere rsync over ssh.

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

For at specificere den type protokol, der skal bruges,-e>mulighed bruges.

Produktion:

Rsync med særlige filtilladelser

Hvis vi ønsker at synkronisere filer til den lokale eller eksterne vært med tilladelserne til de filer, der ændres. Følgende kommando skal bruges.

uri vs url
rsync -avhe ssh --chown=USER:GROUP /foo user@remote-host:/tmp/>

Ovenstående kommando vil synkronisere alle filerne i mappen /foo med filerne i mappen /tmp iremote-host>med alle filer, der ejes af BRUGER med gruppen GROUP.

Produktion:

Bemærk: Detuser>oggroup>skal allerede være oprettet i fjernværten.

Rsync med --ignore-existing-files>

Vi kan også springe de allerede eksisterende filer over på destinationen. Dette kan generelt bruges, når vi udfører sikkerhedskopier ved hjælp af –link-dest mulighed, mens du fortsætter en backupkørsel, der blev afbrudt.

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

Så alle filer, der ikke findes på destinationen, vil blive kopieret over. Her har jeg slettetgeeksforgeeks>mappe fra biblioteketfoo>, så den skal kun kopieregeeksforgeeks>vejviser.

Bemærk: Dette ignorerer ikke eksisterende mapper, ellers bliver der ikke gjort noget. Selvom der er nogle ændringer i en fil i den lokale vært, ville den stadig ikke blive synkroniseret, hvis den findes på den eksterne vært.

Produktion:

Vis fremskridt under overførslen

For at vise fremskridtene, mens data overføres fra lokal vært til fjernvært, kan vi bruge-–progress>mulighed.

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

Når overførslen er fuldført for en bestemt fil, udsender rsync en oversigtslinje som vist nedenfor.

design mønstre java

Produktion:

I ovenstående billede, hvis vi ser på filen/foo/file2>, det fortæller os det

  • Filen var i alt 44 bytes lang.
  • Den gennemsnitlige overførselshastighed for hele filen var 42,97 kilobyte pr. sekund i løbet af de 0:00:00 sekunder, det tog at fuldføre.
  • Det var den anden overførsel under den nuværende rsync session.
  • Der er 10 filer mere, som fjernværten skal kontrollere (for at se, om de er opdaterede eller ej) ud af de i alt 13 filer på fillisten.
  • Opdater kun fjernbetjeningen, hvis der er en nyere version på det lokale filsystem:
    Hvis vi ønsker at kopiere filer over fjernværten, som er blevet opdateret for nylig på det lokale filsystem. Det er gjort med -opdatering flag. Adfærden er nu sådan:
    • Filer, der ikke findes på fjernværten, kopieres.
    • Filer, der findes på både lokal og ekstern, men som har et nyere tidsstempel på den lokale vært, kopieres til fjernvært. (Omvendt bliver filer, der har et ældre tidsstempel, ikke kopieret).

    Her har jeg lavet nogle ændringer i fil 1 og fil 2 , men ændringerne i fil 2 blev gjort for nylig. Så kun fil 2 bliver synkroniseret.

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

    Produktion: rsync opdatering

    Slet automatisk filer fra lokal vært efter vellykket overførsel

    Lad os nu antage, at vi har en webserver og en backupserver, og vi har oprettet en daglig backup og synkroniseret den med vores backupserver, og så ønsker vi ikke at beholde den lokale kopi af backuppen på vores webserver. Så i stedet for at slette det manuelt efter vellykket overførsel, kan vi bruge--remove-source-files>flag for automatisk at slette filerne fra webserveren.

    hvad er hashset java
    rsync -avhe ssh --remove-source-files /foo user@backup-server:/tmp>

    Produktion:

    Bemærk: Dette sletter kun filerne og ikke mapperne.

    Slet de filer, der er blevet slettet på den lokale vært

    Hvis der er nogle filer, der er slettet på den lokale vært, og vi ønsker, at de også skal opdateres på den eksterne vært, så skal vi bruge--delete>mulighed.

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

    Produktion:

    Så her fil 1 , fil 2 , fil 3 blev slettet på den lokale vært, og som det kan ses, er den også opdateret i den eksterne vært.

    Bemærk: ` rsync` sletter ikke filerne automatisk for at synkronisere mapperne på begge sider.

    Udførelse af et tørløb med `rsync`

    En tør kørsel får 'rsync' til at udføre en prøvekørsel, der ikke foretager nogen ændringer og viser næsten det samme output, som en rigtig kørsel ville gøre. Det bruges generelt med -v, -verbose og/eller -i, -itemize-changes mulighederne for at se, hvad en `rsync` kommando ville gøre, før man rent faktisk kører den.

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

    Produktion:

    Konklusion

    I denne artikel diskuterede vi kommandoen rsync i Linux, som er et alsidigt og kraftfuldt værktøj til at synkronisere filer og mapper mellem værter eller maskiner. Med sin delta-overførselsalgoritme og forskellige muligheder tilbyder den effektiv datasynkronisering, sikkerhedskopieringsmuligheder og filoverførselsstyring. Ved at mestre rsync-kommandoen kan Linux-brugere sikre filkonsistens, optimere datatransmission og strømline deres datahåndteringsarbejdsgange.