Hur man kan använda rsync som ett alternativ till cp
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
.