Rsync

Uit DeVliegendeWiki

Ga naar: navigatie, zoeken

rscync is een efficient programma om bestanden te copiëren, zowel locaal als over een internetverbinding.

De basisformulering:

rsync <switches> <bron> <doel>

Let op dat bij bron er een schuine streep aan het eind staat, die er bij doel niet staat.

rsync -auv ~/ /media/schijf

Inhoud

Dropbox

In februari 2011 ervoer ik dat bij het copiëren van een home directory, de Dropbox-map niet werd meegenomen.

Foutmeldingen

Operation not permitted (1)

Deze foutmelding heeft betrekking op een rechtenprobleem. Bv.:

  • rsync Probeert een bestand te lezen waar het geen toegang tot heeft;
  • rsync Probeert een bestand te updaten waar het geen schrijfrechten op heeft.

rsync: link_stat "/media/SAMSUNG/.*" failed: No such file or directory (2)

Hierbij is media/SAMSUNG het backupmedium.

Mogelijke oorzaken:

  • Fout met quotes [1]
  • Permissieprobleem

Bronnen:

  • Vergelijkbare problemen: [2]

Symlink ... failes: Operation not permitted (1)

[3]:

That usually means that the user running the rsync doesn't own the
file on the receiving side, so rsync's attempt to change its group
information failed.

Vervolgens het betreffende script als root uitgevoerd, en toen trad deze fout niet op

rsync: chown "/media/SAMSUNG/6/Desktop" failed: Operation not permitted (1)

Foutmeldingen & continuïteit

In februari 2011 maakte ik mee dat rsync stopte na een 'broken pipe'-foutmeling aangaande een oude Windows-backup.

Geopende bestanden copiëren

Onder Linux copiëert rsync geopende bestanden, omdat dat bepaald wordt door het os, en niet door rsync zelf. Je hebt echter geen garantie of het resultaat zinvol is. Bv. omdat je niet weet wat er wel of niet naar het bestand is geschreven.

Waarschijnlijk is het beter om per applicatie na te gaan wat de situatie is. Komt-ie:

  • Tekstdocumenten: Geen probleem, want je hebt niet elke keer hetzelfde tekstdocument open, en al helemaal niet in dezelfde toestand;
  • E-mail (Thunderbird): Als dit IMAP betreft, is dat ook weinig problematisch

Bronnen:

Logs bijhouden

Voorbeeld 1

Commando

rsync <doel> <bron> > log.txt

Lijkt niet te werken: In het log.txt-bestand belandt een lange rij van geslaagde transfers, maar juist niet wat er niet goed ging. die belanden op het scherm.

Switches

-a

Archive: Een gecombineerde schakelaar die handig is voor archiveren. Deze schakelaar is een afkorting voor

rsync -rlptgoD

en houdt onder andere recursie in, en behoud van links.

--append

?

--delete

Verwijdert bestanden van de doellocatie als deze niet langer op de bronlocatie aanwezig zijn. Volgens mij is dat voor backups beslist niet handig: Als door een fout de bronlocatie leeg is, wordt automatisch de doellocatie ook gewist. Zie http://www.linuxquestions.org/questions/linux-software-2/rsync-didnt-exit-upon-error-833072/ ter illustratie hiervan.

Voor backups is deze optie niet aan te bevelen.

-e

Te gebruiken protocol.

Bv.:

rsync -e 'ssh -p 3000' -avl demo@123.45.67.890:/home /backup/

Hierbij wordt rscync over ssh toegepast met poortnummer 3000

--exclude

Een map uitsluiten van archiveren. Bv. alle dot-bestanden en dot-mappen overslaan:

rsync -va --exclude '.*' ~/ ~/Temp

-l

Behoudt links.

--progress

Toont voorgang per individueel bestand. Kan handig zijn bij copieren van grote bestanden.

--stats

Toont additionele info, bovenop verbose.

-u

Update: Copiëer alleen bestanden die nieuwer zijn op de bronlocatie dan op de doellocatie. Dat is wat je typisch bij een backup wilt hebben.

-v

Functie: Verbose: Commentaar geven tijdens uitvoering.

-z

Gebruik compressie voor snellere dataoverdracht

Voorbeelden

Voorbeeld 1

rsync -va ~/Dropbox ~/Temp

Hier copieert rsync de inhoud van map Dropbox naar map Temp, beiden in de home-directory. Hierbij:

  • -v - Verbose
  • -a - Archief

Voorbeeld 2

rsync -va --exclude '.*' --exclude 'Temp' ~/ ~/Temp

Hierbij wordt de home directory gecopieerd naar map Temp, met uitzondering van dotfiles en de directory Temp zelf

Voorbeeld 3

sudo rsync -avu --delete /home/strompf/ /media/SAMSUNG/06

  • --delete deletes anything in the target folder that you've deleted in the original folder, which does stop you backup growing.
  • -a = archive mode
  • -v = verbose (only use it once and you'll get bored but it's fun the first time)
  • -u =skip files that are newer on the receiver, this only works on subsequent times but does speed things up for subsequent backups.

Bron: http://ubuntuforums.org/showthread.php?t=592788

Voorbeeld 4

sudo rsync -au --append ~/ /destination-folder

Bron: http://ubuntuforums.org/showthread.php?t=592788

Vraagstukken

  • Worden geopende bestanden ook gecopiëerd? > Zie elders in dit artikel
  • Dropbox-bestanden leken niet gecopiëerd te worden. Klopt dat?
  • Wat gebeurt er bij een foutmelding? Gaat rsync dan door?
  • Kun je logs aanmaken?

Bronnen

Persoonlijke instellingen