Synchronizace
- viz. dokumentace "synchronizace.txt"
Jak překopírovat oddíl disku na jiný oddíl
předzahájením kopírování, budeme-li kopírovat na úrovni souborů (tedy pomocí rsync, tar, cp, apod.), je vhodné si kopírovaný oddíl připojit do nového místa, abychom předešli problémům s vnořenými připojenými oddíly (např. chceme-li kopírovat kořenový oddíl, musíme počítat s tím, že v adresáři / jsou připojeny další souborové systémy a oddíly, např /proc, /sys, občas /boot apod.). Není také od věci souborový systém takto připojit pouze pro čtení.
mount -o ro /dev/sda1 /mnt/root
Některé verze Linuxu a jiných unixových systémů neumožňují připojit oddíl do dvou míst zároveň. V takovém případě je při kopírování třeba dávat pozor, abychom do kopírovaných souborů nezařadili i další připojené oddíly a tím nekopírovali zbytečná data (např. adresáře /proc, /sys apod.), nebo se dokonce nezacyklili (cp / /mnt/root).
dd
ddif=/dev/puvodni_disk of=/dev/novy_disk Pokud z nějakého důvodu nemůžeme použít program dd (např. cílový oddíl má jinou velikost nebo na něm chceme použít jiný systém souborů, než na výchozím), jsou pro nás vhodnými kandidáty programy rsync, cpio a tar.
rsync
rsync -a /mnt/puvodni_disk/ /mnt/novy_disk
cpio
cd /mnt/puvodni_disk && find . -depth -xdev | cpio -pdvm /mnt/novy_disk
tar
tar -cpf - /mnt/puvodni_disk | ( cd /mnt/novy_disk && tar -xpf - )
ideální archivace
sudo tar cpzfv martyn_projects.tgz projects
dump+restore
Funguje jen na ext2 a ext3 filesystémech, XFS a JFS mají obdobnou utilitu.
dump -0f - /mnt/puvodni_disk | (cd /mnt/novy_disk && restore -f - )
cp
dostaneme-li se do situace, kdy nemáme k dispozici prakticky nic, postačí i obyčejný unixový příkaz cp, ale je třeba dbát na zachování práv a atributů kopírovaných souborů, a to pomocí přepínačů "-dpR", případně ekvivalentu "-a":
cp -dpR /mnt/puvodni_disk /mnt/novy_disk
Tvorba archivu
Zalohovanipres SSH
% scp archiv.tgz server:/
% scp clyde:/etc/*
% tar zcvf - /home | ssh server "cat > archiv.tgz"
Dat primo na paskovou mechaniku
% tar zcvf - /home | ssh server "cat > /dev/tape"
Asynchronni aktualizace (musi byt potvrzeny klic)
% rsync -ae ssh bobina.monstav.com:/usr/ /usr/
Srovnani a synchonizace napr. dvou programu
(apache),prejmenuje adresar /usr/local/apache z pocitace server2 a pote vytvori presnou kopii adresare /usr/local/apache ze systemu server1 (zachova adresarovou strukturu a veskera opravneni)
% cd /usr/local
% tar zcf - apache/ | ssh server2 "cd /usr/local; mv apache apache.bak; tar zpxvf -"
Prime rozbaleni bez nutnosti kopirovani
napr.nedostatek mista na pocitaci
% ssh server1 "cd /etc; tar zpvxf -" < archiv.tgz"
nebo z ciloveho pocitace
% ssh server2 "cat archiv.tgz" | tar zpvxf -
RSYNC Synchonizace
pokudje /usr/ ... bude kopirovat cely obsah adresare, /usr pokud ma byt na vrcholku i samotny adresar je bez lomitka nakonci
% rsync -ave ssh server:/usr/ /usr/
kopie adresare na pocitaci server
% rsync -ave ssh server:/home/martyn
presna kopie adresare
vcetnejiz napr. vymazanych souboru a bez textoveho vystupu (jen u chyb, vynecham priznak -v)
% rsync -ae ssh --delete server:/etc
PAX (latinsky = mir (mezi zastanci tar a cpio))
zapisaktualniho adresare
% pax -wf archiv.pax
% pax -wvf archiv.pax
vypis archivu
% pax -f archiv.pax | more
rozbaleni archivu
% pax -rvf archiv.pax
zjisteni o jaky archiv jde (komprimovany, ci nikoliv), pak obnoveni pro nekomprimovany archiv
% file archiv.old
% pax -rvf archiv.old
interaktivni rozbalovani a prejmenovavani
% pax -rif archiv.old
rekurzivni kopie adresare
% pax -rw adresar
prirustkove zalohy (nejdrive vytvori zalohu se jmenem Pondeli), pak uz jen prirustkove dodava vzdy o pulnoci (-T 0000)
% pax -wvf zaloha/Pondeli
% pax -wv -T 0000 -f zaloha/Utery
obnoveni souboru s vynechanim souboru
% pax -rvf ~/backup -c './soubor3.txt'
% pax -rvf ~/backup -c './zal*'
obnoveni pouze jednoho souboru
% pax -rvf ~/backup -n './soubor.txt'
Spousteci sektor
jehoulozeni na horsi casy, pro IDE, SCSI a kopie rovnou na disketu
% dd if=/dev/hda of=bootsector.bin bs=512 count=1
% dd if=/dev/sda of=bootsector.bin bs=512 count=1
% dd if=/dev/hda of=/dev/fd0 bs=512 count=1
obnoveni spousteciho sektoru a pak primo z diskety
% dd if=bootsector.bin of=/dev/hda
% dd if=/dev/fd0 of=/dev/hda bs=512 count=1