Beetaversioon: sisu on enamasti terviklik ja avalikuks katsetamiseks valmis, kuid vajab veel tehnilist, keelelist ja kasutatavuse kontrolli.

Peatüki vaade

Linux/Unix/macOS käsurea kiirõpik

Praegu loed peatükki Tervete kataloogipuude haldus ja jagamine, mis kuulub osasse Osa III: Failid, võrk ja süsteemitöö.

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

VajadusSobiv viisPiirang
Proovi muudatust kohalikus koopiascp -Rsama nimega sihtfail võib üle kirjutuda
Uuenda olemasolevat koopiatrsync, algul proovikäivitussünkroonimine võib kopeerida ka eksimuse
Saada üks kindel hetkeseistar.gz või ZIPjärgmist versiooni jagad eraldi
Tee koostööd ja jälgi muudatusiGitei 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

  1. Lisa projekti teine tekstifail. Kas proovikäivitus leiab ainult vajaliku täienduse?
  2. Muuda taastatud koopias üht rida. Milline diff -r väljund tekib?
  3. Miks ei tõesta sama failide arv või kataloogimaht veel koopiate võrdsust?
  4. 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 koopia
  • rsync -avn projekt/ projekt-varu/kontrolli enne
  • rsync -av projekt/ kasutaja@server:/srv/projekt/sünkrooni serverisse
  • scp -r projekt kasutaja@server:/tmp/saada kiirelt
  • tar -czf projekt.tgz projekt/tee hetkearhiiv
  • gitjälgi ajalugu

Olulisemad lipud, märgid ja kiirnupud

  • projekt/rsync-allikas: kataloogi sisu
  • projektrsync-allikas: kataloog ise
  • rsync -nproovi enne
  • cp -asäilita metaandmed