Hund

Hur man kan använda rsync som ett alternativ till cp

13 Maj 2020

Att kopiera stora och många filer med kommandot cp är inte alla gånger optimalt eftersom att man som standard inte får någon form av återkoppling av själva händelseförloppet.

Ett alternativ till cp kan då vara verktyget rsync, som kanske är mest kopplat till säkerhetskopiering, men som med rätt flaggor också är ett utmärkt och lite mer avancerat alternativ till cp för att säkrare kopiera enskilda filer.

Kommandot jag använder mig av är:

$ rsync -ah --progress <källa> <mål>

Här är ett exempel när jag kopierade filerna för en virtuell maskin över nätverket:

$ rsync -ah --progress VirtualBox/vhost-cloud-new /media/HDD0/
sending incremental file list
vhost-cloud-new/
vhost-cloud-new/vhost-cloud-new.vbox
          3.29K 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=7/9)
vhost-cloud-new/vhost-cloud-new.vbox-prev
          3.29K 100%    3.14MB/s    0:00:00 (xfr#2, to-chk=6/9)
vhost-cloud-new/vhost-cloud.vdi
          3.43G  19%  111.59MB/s    0:02:00

Som exemplet demonstrerar kan rsync visa information för förhändelseloppet i form av bland annat storleken på filerna, aktuell skrivhastighet och uppskattad återstående tid.

Förklaring av flaggorna

-a, --archive Samma sak som -H, --hard-links, -A, --acls och -X, --xattrs. Vilket innebär att den bevarar hårda länkar, filrättigheter och metadata för filerna.
-h, --human-readable Mer lättförstådd återkoppling.
--progress Visar aktuell status för operation.

Förenkla allting med ett alias

Det är inte alltid enkelt att komma ihåg alla syntax och alla flaggor för rsync, det kan därför vara en god idé att skapa ett alias för det. Jag har ett alias som heter cpr.

cpr='rsync -ah --progress'

Om du inte är bekant med hur alias fungerar kan du läsa mer om det i mitt inlägg om hur man kommer igång med alias.

Att tänka på med rsync och mappar

När du kopierar mappar med rsync måste du vara noggrann med hur du använder och inte använder avslutande snedstreck på mapparna. Om du exempelvis anger källmappen aaa och målmappen bbb kommer rsync att kopiera innehållet från mappen aaa till mappen bbb, men om du däremot anger målet bbb/ kommer rsync att kopiera själva mappen aaa till målmappen bbb.

Det är också extra viktig att vara noga om du använder dig av flaggan --delete, om du skulle använda den i kombination med kommandot rsync --delete aaa bbb innebär det att allting som redan finns i målmappen bbb men som inte finns i källmappen aaa kommer att raderas i målmappen bbb.

Meta

Kommentarer

Det finns inga kommentarer för det här inlägget. Använd e-postformuläret om du vill lämna en kommentar på det här inlägget. [Användarvillkor]