Portál AbcLinuxu, 6. května 2025 11:34
Řešení dotazu:
#!/bin/sh #Adresar se zalohami BACKUP_DIR=/home/backup #Jmeno zalohy BACKUP_SUBDIR=server1 mkdir -p $BACKUP_DIR/$BACKUP_SUBDIR #Nezalohovat neco co je nekde namountovane, s vyjimkou /home, boot a / #Muze byt potreba upravit fsdirs=`mount |awk '$3!="/" && $3!="/home" && $3!="/boot" {x=x " --exclude=" $3 "/* "};END {print x}'` excl="--exclude=$BACKUP_DIR/* --exclude-from /root/backup-excludes $fsdirs" direxcl="" backup_dir () { a1=`echo "$1" | sed 's/\//__/g'` tar $excl $2 -cvzf $BACKUP_DIR/$BACKUP_SUBDIR/__$a1.tgz /$1 direxcl="$direxcl --exclude=/$1/* --exclude=/$1" } backup_dir etc backup_dir root backup_dir home backup_dir opt backup_dir bin backup_dir lib backup_dir sbin backup_dir usr/local backup_dir usr/lib backup_dir usr/share/doc backup_dir usr "$direxcl" backup_dir var tar $excl $direxcl -cvzf $BACKUP_DIR/$BACKUP_SUBDIR/__.tgz /Ve skriptu je odkaz na
/root/backup-excludes
kde je seznam souboru co nezalohovat. Typicky ruzne cache, co se samy vytvori znova, adresar kde ukladam zalohy z jinych systemu (mit zalohy v zaloze neni dobry napad), cely /tmp apod...
Priklad jak muze /root/backup-excludes
vypadat:
/.journal /swap /backup/* /home/*/.texmf-var/fonts/* /home/*/.ccache /proc/* /tmp/* /var/backups/* /var/cache/analog/dns/* /var/cache/apt/archives/* /var/cache/debconf/*-old /var/lib/apt/lists/* /var/lib/dpkg/*-old /var/tmp/*Zalohovani je jednoduche, spusti se to a v /home/backup/server1 to vytvori nekolik tarballu. Ty pak presunu nekam jinam.
Úplně automaticky to nepůjde nikdy, protože nemůžete zálohovat data, která se vám mění pod rukama. Jisté pragmatické řešení je hodit všechno nad LVM a zálohovat tak, že uděláte snímek a například rsyncem zazálohujete snímek. Pak můžete snímek zahodit.
lvremove
:))
# sync na disk sync # vytvořeni lvmmybackup pro zálohování /dev/main/backuped_volume o velikosti 20Gb # (nesmí dojít během zálohy ke změně více než 20Gb dat) /sbin/lvcreate -L20G -s -n lvmmybackup /dev/main/backuped_volume # připojím mount /dev/main/lvmmybackup /někam/kde/to/nezalohuji #tady zálohuji normálně #odmontuji umount /někam/kde/to/nezalohuji #odstraním /sbin/lvremove -f /dev/main/lvmmybackup(nic není neošetřeno na zklamání !) Tu je něco o tom nečesky
volume
má velikost 20Gb a takže do něj nelze více uložit.volume
volume
např. /dev/main/vg00-root
normálně funguje vše se zapisuje./dev/main/vg00-root
v momentě vytvoření toho snasphotu./dev/main/backuped_volume
/dev/main/backuped_volume
je ten svazek, ke kterému chcete vytvořit snapshot tj., který chcete zálohovat.df- h
--- Volume group --- VG Name LVM-sda2-sdb2 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 3 Open LV 3 Max PV 0 Cur PV 1 Act PV 1 VG Size 297,86 GB PE Size 4,00 MB Total PE 76251 Alloc PE / Size 76251 / 297,86 GB Free PE / Size 0 / 0 VG UUID o0CrBY-gNER-XRDl-OW2n-wLL3-kurA-jAA0px
--- Physical volume --- PV Name /dev/md1 VG Name LVM-sda2-sdb2 PV Size 297,86 GB / not usable 3,44 MB Allocatable yes (but full) PE Size (KByte) 4096 Total PE 76251 Free PE 0 Allocated PE 76251 PV UUID AQKX1U-gww4-XJSw-PwdZ-eMMz-rK1j-0TjIIu
df -h Souborový systém Velikost Užito Volno Uži% Připojeno do /dev/mapper/LVM--sda2--sdb2-root 6,5G 4,4G 1,8G 72% / tmpfs 1,5G 0 1,5G 0% /lib/init/rw udev 10M 728K 9,3M 8% /dev tmpfs 1,5G 0 1,5G 0% /dev/shm /dev/md0 221M 34M 175M 17% /boot /dev/mapper/LVM--sda2--sdb2-home 285G 78G 192G 29% /homea stahl jsem si skript: http://www.abclinuxu.cz/blog/xkucf03/2009/11/lvm-snapshot-obraz-disku-jako-init.d-sluzba upravil
zarizeni="/dev/LVM-sda2-sdb2/root"; # LVM logický oddíl pripojny_bod="/mnt/obraz"; # Adresář, kam vytvořený obraz připojíme velikost_obrazu="30G"; # tolik změn lze na disku udělat, než se snapshot zaplní na 100% nazev_obrazu="obraz"; # Název LVM obrazu nazev_vg="LVM-sda2-sdb2"; # LVM skupina svazků (VG)Porad delam asi neco blbe
/etc/init.d/obraz-disku start Vytvářím obraz disku File descriptor 7 left open Insufficient free extents (0) in volume group LVM-sda2-sdb2: 7680 requiredomlouvam se za mou tupost
volume group
) pro vytvoření toho nového volume
, pokud je všechno místo vyčerpáno pro LVM--sda2--sdb2-root
a LVM--sda2--sdb2-home
, tak nelze vytvářed další volume
.
--- Physical volume --- PV Name /dev/md1 VG Name LVM-sda2-sdb2 PV Size 297,86 GB / not usable 3,44 MB Allocatable yes (but full) PE Size (KByte) 4096 Total PE 76251 Free PE 0 Allocated PE 76251 PV UUID AQKX1U-gww4-XJSw-PwdZ-eMMz-rK1j-0TjIIu
rsync --exclude=/proc --exclude=/sys --compress-level=9 -avzhhPe 'ssh -p 443' --numeric-ids --delete root@server:/ zaloha/
sfdisk -d /dev/sda | sfdisk /dev/sdbje mozne neco takoveho, abych to mel prozatim v souboru? :
#zaloha sfdisk -d /dev/sda | sfdisk /zaloha/zozlozeni_disku #obnoveni sfdisk -d /zaloha/rozlozeni_disku | sfdisk /dev/sdb
1+
Pokud je cilovy disk vetsi tak jej potom staci pomoci Gparted "roztahnout" na plnou velikost oddilu a je hotovo.
Live CD s Gparted resi vse.
dd if=/dev/sda of=/mnt/backupZaloha bude velika jako cely disk sda, muzes si pohrat s kompresi, dostanes se nejmene na velikost dat na disku. LVM snapshotum jsem neprisel na chut, krome konzistence mi neprinesly nic lepsiho. Zalohuju ted opensource systemem bacula, nicmene to neresi presne to co jsi chtel - tedy snadnou obnovu 'sakumprask'. Moznosti je jeste zalohovat jen data a rozdeleni disku. Usetris misto, zkratis zalohovaci okno, muzes prizpusobit zalohovani pro jednotlive aplikace, muzes vynechat nesmysly apod. Pokud jde o nove rozdeleni disku, hodi se to pokud bude novy disk vetsi nez puvodni. Data zalohuj nejakm pomoci taru s kompresi a rozdeleni disku pomoci:
sfdisk -d /dev/sdX > rozdeleni_disku.txtObnovu pak provedes snadno pomoci:
cat rozdeleni_disku.txt|sfdisk /dev/sdYZavedeni grubu by nemel byt problem.
sfdisk -d /dev/sda > sfdisk /dev/sdb
zkopci rozdeleni disku na druhy disk.. tzn. bez filesystemu?
rsync -x / /mnt/zaloha
+ sfdisk
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.