Tervete kataloogipuude haldus ja jagamine
Üksikfaili kopeerimise asemel tuleb projekti jagamisel otsustada, mis kaasa läheb ja kuidas tulemust kontrollida. Siinne harjutus ühendab sünkroonimise ja arhiivid; üksikkäskude lipud leiad neist peatükkidest.
Vali eesmärgi järgi
| Vajadus | Sobiv viis | Piirang |
|---|---|---|
| Proovi muudatust kohalikus koopias | cp -R | sama nimega sihtfail võib üle kirjutuda |
| Uuenda olemasolevat koopiat | rsync, algul proovikäivitus | sünkroonimine võib kopeerida ka eksimuse |
| Saada üks kindel hetkeseis | tar.gz või ZIP | järgmist versiooni jagad eraldi |
| Tee koostööd ja jälgi muudatusi | Git | ei talleta kõiki faile ega failisüsteemi metaandmeid |
Varukoopia pole lihtsalt teine kataloog samal kettal. Kettarikke vastu aitab eraldi andmekandja või masin; kogemata muudetud faili taastamiseks on vaja ka varasemaid versioone.
Koosta jagatav koopia
Harjutame enda loodud failidega. Punktiga algav .env tähistab siin seadistusfaili, milles päris projektis võivad olla saladused. Näites saladusi ei ole.
mkdir -p ~/tmp/jagamise-naide/projekt/cache
cd ~/tmp/jagamise-naide
printf '%s\n' 'Projekti juhend' > projekt/README.txt
printf '%s\n' 'AINULT_NAIDIS=1' > projekt/.env
printf '%s\n' 'taasloodav sisu' > projekt/cache/ajutine.txt
rsync --exclude jätab mustrile vastavad kirjed ülekandest välja. Allika lõpu / valib kataloogi sisu. -avn säilitab tavalised Unixi metaandmed, loetleb kavandatud töö ja teeb ainult proovikäivituse:
rsync -avn --exclude='.env' --exclude='cache/' projekt/ jagamiseks/
Loendis peab olema README.txt, kuid mitte .env ega cache/ajutine.txt. Kui tulemus sobib, korda sama käsku ilma n-ita:
rsync -av --exclude='.env' --exclude='cache/' projekt/ jagamiseks/
ls -la jagamiseks
Väljajätmine ei kustuta varem sihtkohta sattunud saladusi. Kasuta jagamiseks uut puhast kataloogi. Ära lahenda seda pimesi valikuga --delete.
Kontrolli ka taastamist
Paki jagatav koopia arhiivi, vaata liikmete loendit ja ava arhiiv eraldi kataloogi. -C määrab olemasoleva lahtipakkimiskoha.
tar -czf jagamiseks.tgz jagamiseks/
tar -tf jagamiseks.tgz
mkdir taastatud
tar -xzf jagamiseks.tgz -C taastatud
diff -r jagamiseks taastatud/jagamiseks
diff -r võrdleb kataloogide faile rekursiivselt. Vaikne väljund tähendab siin, et failisisus erinevusi ei leitud; see ei kinnita kõigi õiguste, omanike ega ajatemplite võrdsust. Järgmine kord vali uus taastamiskataloog, mitte ära kirjuta vana testi üle.
rsync -a ei hõlma automaatselt kõiki ACL-e, laiendatud atribuute ega kõvalinke. Git omakorda ei säilita näiteks failide omanikke, ajatemplite ajalugu ega tühje katalooge. Täpseks süsteemivarunduseks vali selleks mõeldud lahendus ja testi taastamist.
Minitest
- Lisa projekti teine tekstifail. Kas proovikäivitus leiab ainult vajaliku täienduse?
- Muuda taastatud koopias üht rida. Milline
diff -rväljund tekib? - Miks ei tõesta sama failide arv või kataloogimaht veel koopiate võrdsust?
- Millist varundust vajaksid, et taastada eilne versioon pärast tänast eksimust?
Peatüki täisspikker
Praktiline kasutus
Eesmärk
terve projekti või kataloogipuu 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/rsync-allikas: kataloogi sisuprojektrsync-allikas: kataloog isersync -nproovi ennecp -asäilita metaandmed