Kopiointi rsyncillä
Last modified on 24. heinäkuuta 2026 • 2 min read • 371 words
Syitä, miksi rsync:tä kannattaa (ei aina, mutta usein) suosia cp:n sijaan:
- Keskeytettyjen siirtojen jatkaminen Jos kopioit suuria tiedomääriä ja terminaalisessio kaatuu tai virta katkeaa, joudut aloittamaan alusta jos käytät cp:tä. rsync voi sen sijan jatkaa juuri siitä, mihin se jäi, mikä voi säästää valtavasti aikaa suurten tietomäärien kohdalla.
- Tehokkuus (delta-siirtoalgoritmi) rsync on suunniteltu toimimaan älykkäästi. Jos kopioit tiedostoa, joka on jo olemassa kohdessa (esim. päivität varmuuskopiota), rsync kopioi vain ne tiedoston osat, jotka ovat tosiasiallisesti muuttuneet (”delta”), sen sijaan että se korvaisi koko tiedoston. cp puolestaan kopioi aina koko tiedoston joka kerta.
- Reaaliaikainen edistymisen seuranta rsync tarjoaa erinomaista visuaalista palautetta. Käyttämällä -P- (tai –progress-) saat reaaliaikaisen edistymispalkin, joka näyttää valmistumisprosentin, siirtonopeuden ja arvioidun jäljellä olevan ajan. cp on tunnetusti hiljainen, jolloin joudut arvaamaan, onko prosessi vielä käynnissä vai onko se jumiutunut. Toki voit tarkista kohdekansiosta saapuvan tiedoston koon perusteella, eteneekö prosessi lainkaan (ls -lh tiedostonimi tai du -hs tiedostonimi)
- Saumattomat etäsiirrot rsync on alun perin suunniteltu toimimaan SSH:n kautta. Sen avulla voit kopioida tiedostoja suoraan etäpalvelimelle tai sieltä pois yhtä helposti kuin kopioisit tiedostoja omalla koneellasi. cp ei pysty tähän; jos haluat käyttää cp:tä etäpalvelimelle, sinun on ensin liitettävä etätiedostojärjestelmä paikallisesti, mikä on paljon monimutkaisempaa ja virhealtisempaa.
Tässä on yleinen käyttötapaus: kansion siirtäminen sen koko sisällön kanssa:
rsync --progress --recursive source targetAiemmin keskeytyneen kopioinnin jatkaminen:
rsync --progress --recursive --ignore-existing source targetHuomaa, että
rsync source/ targetja
rsync source targettuottavat eri lopputuloksen! Lähdehakemiston perässä oleva kauttaviiva kertoo rsyncille, että lähdehakemiston sisältö tulee kopioida kohdehakemistoon. Ilman kauttaviivaa kohdehakemistoon luodaan yksi lähdehakemiston kanssa identtinen hakemisto. Jos haluat tarkan kopion, voit käyttää -a -flagia (–archive), joka sisältää flagit -rlptgoD:
--recursive (r)
--links (l, copy symlinks as symlinks)
--perms (p, preserve permissions)
--times (t, preserve modification times)
--group (g, preserve group)
--owner (o, preserve owner)
--devices --specials (D, preserve device files and special files, works only for root)Jos haluat jättää ‘directory’-nimisen hakemiston tai ‘file’-nimisen tiedoston kopioinnin ulkopuolelle, syntaksi on seuraava:
rsync -a --exclude 'directory' --exclude 'file' source/ targetOle erittäin varovainen poissulkemisen kanssa, sillä ei ole väliä, missä kohtaa hierarkiaa hakemisto tai tiedosto sijaitsee! Jos lähdehakemiston eri osissa on useita samannimisiä tiedostoja, ne kaikki jätetään pois! Jos haluat jättää pois tietyn tiedoston, voit määrittää sen koko polun alkaen merkillä “/”, joka tarkoittaa lähdehakemiston juurta (ei koko tiedostojärjestelmän juurta).