Tervete kataloogipuude haldus ja jagamine
See peatükk koondab üheks töövooks käsud cp, rsync, scp, tar, zip ja Git-i loogika. Mõte ei ole korrata kõiki üksikkäske, vaid anda tervikpilt: mida teha siis, kui sul on vaja hallata või jagada tervet projektipuud.
Loogika
Kui liigud üksikfailidest edasi tervete kaustapuudeni, siis küsimus ei ole enam ainult “kuidas kopeerida üks fail”, vaid:
- kas tahan teha kohaliku koopia
- kas tahan saata puu teise masinasse
- kas tahan teha ühest hetkest arhiivi
- kas tahan jagada seda nii, et hiljem saaks muudatusi jälgida
- kuidas kontrollida, et tulemus sai õige
Just siin lähevad tööriistad oma tugevuste järgi lahku.
Kiirülevaade
Eesmärk on valida tööriist terve projektipuu jaoks: koopia, sünkroon, arhiiv või muudatusajalugu.
| Tööriist | Milleks | Mida tavaliselt näed |
|---|---|---|
cp -R | lihtne kohalik koopia | edukal juhul sageli vaikne |
rsync | võrdle ja kopeeri erinevused | -av näitab ülekantud faile |
scp -r | saada puu üle SSH | ülekande edenemine |
tar, zip | tee jagatav pakend | arhiivifail; tar -tf näitab sisu |
| Git | jälgi muutusi ajas | diffid, commit'id ja ajalugu |
Tüüpilised algaja vead
- kasutatakse sama töö jaoks juhuslikult eri tööriistu, mõtlemata eesmärgile
- arvatakse, et
scp -rjarsyncon alati sisuliselt sama - ei kontrollita, kas koopia sisaldab ka peidetud faile või õigeid metaandmeid
Millal millist tööriista kasutada
cp -Rsobib, kui tahad samas masinas teha lihtsa koopiarsync -avsobib, kui tahad korduvat sünkroonimist või varundustscp -rsobib, kui tahad kiiresti terve puu SSH kaudu teise masinasse saatatar -czfvõitar -cJfsobib, kui tahad ühest hetkest ühte arhiivifailizip -rsobib, kui jagad sisu inimestega, kes töötavad eri süsteemides- Git sobib, kui tahad mitte ainult jagada tulemust, vaid ka jälgida muudatusi ajas
Kohalik koopia: cp
Kui vajad ühekordset koopiat samas masinas, siis alusta lihtsast käsust:
cp -R projekt projekt-koopia
See on hea valik siis, kui:
- tahad kiiresti proovida midagi teises koopias
- tahad teha enne suuremat muutust kohaliku varu
- allikas ja sihtkoht on samal masinal
Kui metaandmed loevad, siis GNU/Linuxis kasutatakse sageli:
cp -a projekt projekt-koopia
Seda tasub võtta kui “säilita nii palju kui võimalik”. Eri süsteemid ei käitu siin alati täpselt ühtemoodi.
Korduv sünkroonimine: rsync
Kui sama puud liigutatakse korduvalt, siis rsync on tavaliselt parem kui cp või scp.
rsync -av projekt/ projekt-varu/
Selle käsu tugevused:
- saadab uuesti peamiselt muutunud sisu
- säilitab struktuuri ja metaandmeid paremini
- sobib nii lokaalseks kui kaugsünkroonimiseks
Oluline kaldkriipsu loogika:
projekt/tähendab enamasti “selle kausta sisu”projekttähendab sagedamini “see kaust tervikuna”
Enne suuremat kopeerimist on väga mõistlik teha dry-run:
rsync -avn projekt/ projekt-varu/
Kui siht on serveris:
rsync -av projekt/ kasutaja@server:/srv/projekt/
Kiire ülekanne teise masinasse: scp
scp on hea siis, kui tahad lihtsalt midagi kiiresti teise masinasse saata:
scp -r projekt kasutaja@server:/tmp/
See on praktiline, kui:
- vajad ühekordset üleslaadimist
- sul ei ole vaja keerukamat sünkroonimisloogikat
- SSH on juba seadistatud
Kui tahad võimalikult palju säilitada ajatemplite ja õiguste kohta, kasuta sageli:
scp -rp projekt kasutaja@server:/tmp/
Üks fail kogu puust: tar, tgz, zip
Kui tahad tervest puust teha ühe jagatava faili, siis sobib arhiiv:
tar -czf projekt-2026-04-13.tgz projekt/
tar -tf projekt-2026-04-13.tgz
See on hea valik siis, kui:
- tahad saata ühe faili
- tahad võtta kindla hetke snapshot'i
- tahad arhiivi enne lahti pakkimata kontrollida
Kui adressaadil on tõenäoliselt Linux või macOS, on tar.gz või .tgz sageli loomulik valik.
Kui adressaadid on väga eri keskkondades, on zip mugav:
zip -r projekt.zip projekt/
unzip -l projekt.zip
Mis saab õigustest ja omanikest
Suure puu halduses on oluline eristada nelja asja:
- faili sisu
- failipuu struktuur
- õigused
- omanikud ja grupid
Rusikareeglid:
cp -Rjascp -rlahendavad eelkõige sisu ja struktuurirsync -ajatarhoiavad Unix-laadset metaandmete pilti paremini kooszipsobib rohkem jagamiseks kui täpseks Unix-i säilitamiseks- Git ei talleta tavaliselt omanikku, gruppi ega ajatemplite ajalugu
Git talletab hästi:
- faili sisu
- kataloogistruktuuri
- tekstimuudatuste ajaloo
- täidetavusbitte olulisemates juhtudes
Git ei ole varukoopia-arhiiv igas mõttes. See ei asenda tar-i ega rsync-i, kui tähtis on kogu failisüsteemi metaandmete võimalikult täpne ülekandmine.
Jagamine: arhiiv või GitHub
Kui eesmärk on lihtsalt “saada see tervik teisele inimesele”, siis mõtle nii:
- üks ühekordne hetkeseis:
tar.gzvõizip - korduv uuendamine serverisse:
rsync - ühine arendus ja muudatuste ajalugu: Git + GitHub
Seega:
- andmepuu või snapshot: arhiiv
- deploy või varu:
rsync - koostöö ja versioonihaldus: Git
Kuidas kontrollida, et said õige asja
Suure puu juures on kontroll sama tähtis kui kopeerimine ise.
Kõige praktilisemad kontrollid:
- vaata failide arvu ja suurust
- loe arhiivi sisu ilma lahti pakkimata
- tee
rsync-iga dry-run - võrdle vähemalt mõne võtmefaili räsi
Näited:
du -sh projekt projekt-koopia
find projekt | wc -l
find projekt-koopia | wc -l
tar -tf projekt-2026-04-13.tgz | head
unzip -l projekt.zip
shasum -a 256 projekt/README.md projekt-koopia/README.md
Linuxis on sama loogika sageli kujul:
sha256sum projekt/README.md projekt-koopia/README.md
Soovitatud töövood
1. Enne riskantset muutust
rsync -av projekt/ projekt-varu/
2. Saada tervik serverisse
rsync -avn projekt/ kasutaja@server:/srv/projekt/
rsync -av projekt/ kasutaja@server:/srv/projekt/
3. Tee jagatav snapshot
tar -czf projekt-$(date +%F).tgz projekt/
tar -tf projekt-$(date +%F).tgz | head
4. Jaga koostööks
git status
git add .
git commit -m 'Valmista projekt jagamiseks'
git push
Viimase töövoo detailid tulevad eraldi Git-i peatükis.
Minitest
- Tee ühest testkaustast kohalik koopia käsuga
cp -R. - Tee samast kaustast
rsync -avndry-run teise kausta. - Paki sama kaust
.tgzfaili ja kuva selle sisu käsugatar -tf. - Mõtle ühe näite põhjal, kas sinu eesmärk on snapshot, sünkroonimine või koostöö ajalooga.
Peatüki täisspikker
Praktiline kasutus
Eesmärk
terve projekti või kaustapuu puhul vali tööriist selle järgi, kas tahad koopiat, korduvat sünkroonimist, arhiivi või versiooniajalugu
Põhikujud
cp -R projekt projekt-koopiatee kohalik koopiarsync -avn projekt/ projekt-varu/kontrolli ennersync -av projekt/ kasutaja@server:/srv/projekt/sünkrooni serverissescp -r projekt kasutaja@server:/tmp/saada kiirelttar -czf projekt.tgz projekt/tee hetkearhiivgitjälgi ajalugu
Olulisemad lipud, märgid ja kiirnupud
projekt/sisu seesprojektkaust tervikunarsync -nproovi ennecp -asäilita metaandmed