Btrfs рдФрд░ LVM рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдмреИрдХрдЕрдк

рдЫрд╡рд┐

рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рдмреИрдХрдЕрдк рдкреЛрд╕реНрдЯ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдХрдИред рдореИрдВрдиреЗ рдмреИрдХрдЕрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рднреА рдзреНрдпрд╛рди рд░рдЦрд╛ред
рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмреИрдХрдЕрдк, рдорд╛рдЙрдВрдЯреЗрдб рдкрд╛рд░реНрдЯреАрд╢рди рдФрд░ рдПрд▓рд╡реАрдПрдо рд╡реЙрд▓реНрдпреВрдо (рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдбрд┐рд╕реНрдХ) рд╕реЗ рдбреЗрдЯрд╛ рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдмрдХреБрд▓рд╛, рдЯреАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рдереЗред рдореИрдВ рдЗрд╕рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдШрд░ рдкрд░ рдХреЗрд╡рд▓ 1 рдХрдВрдкреНрдпреВрдЯрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗрд╡рд▓ рд╕рд┐рд╕реНрдЯрдо рдХреНрд╖рддрд┐ рд╕реЗ рдЙрдмрд░рдиреЗ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдард┐рдирд╛рдЗрдпрд╛рдВ рдкреИрджрд╛ рдХрд░реЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдбреЗрдЯрд╛ рдХреА рдирдХрд▓ рдХрд░рддреЗ рд╣реИрдВ, dd рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рднрд╛рдЬрди рдХреА LVM рдЫрд╡рд┐ рдмрдирд╛рддреЗ рд╣реИрдВред рдореИрдВ рд╣рд░ рджрд┐рди (рдХрдо рд╕реЗ рдХрдо рдбреЗрдЯрд╛) рдПрдХ рдмреИрдХрдЕрдк рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ рдХрдо рд╕реЗ рдХрдо 14 рджрд┐рди рд╕реНрдЯреЛрд░ рдХрд░рддрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рд╕рднреА рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддреИрдпрд╛рд░ рдФрд░ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдЦреЛрдЬ рдЕрд╕рдлрд▓ рд░рд╣реАред рддреЛ рд╣рдо рд╣рд╛рде рдореЗрдВ рдЭрд╛рдбрд╝реВ рд▓реЗрдХрд░ рдЕрдкрдиреА рдмрд╛рдЗрдХ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реБрдЖред

рдЕрд╕реНрд╡реАрдХрд░рдг: рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрддреЗ рд╕рдордп, рд░рд╛рдХреНрд╖рд╕реЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдХреЛрдИ рдЙрджреНрджреЗрд╢реНрдп рдирд╣реАрдВ рдерд╛ рдЬреЛ рд╕рдм рдХреБрдЫ рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рдмреИрдХрдЕрдк рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рддрд░реАрдХрд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред рдореИрдВ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреА рдЕрд╢реБрджреНрдзрд┐рдпреЛрдВ рдФрд░ рдЕрдбрд╝рдЪрдиреЛрдВ (рдЬрд╣рд╛рдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ) рдХреЗ рд▓рд┐рдП рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред рд▓реЗрдЦ рдХреЛ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдирдП рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдПрдХ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИрдВ рдФрд░ рдЖрд▓рд╕реА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП :) рдЬреЛ рдЦреБрдж рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рд╣реИрдВред

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐рдпреЛрдВ:


рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рдПрдХ рдмрд╛рд░ рд╕рдм рдХреБрдЫ рдХреА рдкреВрд░реА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдФрд░ рд╣рд░ рджрд┐рди btrfs рдХреЗ рд╕рд╛рде рд╡рд┐рднрд╛рдЬрди рдХрд╛ рдПрдХ рд╕реНрдиреИрдкрд╢реЙрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рдЖрдк LVM рд╡реЙрд▓реНрдпреВрдо рдХреЗ рд╕реНрдиреИрдкрд╢реЙрдЯ рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдкреНрд░рддрд┐ рд╕рдкреНрддрд╛рд╣ рдбреЗрдЯрд╛ рд╣рд╛рдирд┐ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рд╛рдкреНрддрд╛рд╣рд┐рдХ рдкреНрд░рддрд┐рдпрд╛рдВ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред

рддреЛ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирдВрдмрд░ 1, рд░реВрдЯ рд╡рд┐рднрд╛рдЬрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рдкреНрд░рддрд┐ / mnt / backup / root / "day number" / рдореЗрдВ рдмрдирд╛рддрд╛ рд╣реИред

рд▓рд┐рдкрд┐ рд╕рдВрдЦреНрдпрд╛ рез
#!/bin/bash set -e echo "Date_start: `date +%Y-%m-%d-%H-%M-%S`" #     ### Vars ### #     (1970 ) day=$((`date +%s` / (60*60*24))) #    dayexp=21 #  path="/" #  (  ) spath="/snapshots/backup_script/" #  dpath="/mnt/backup/root/" ### Delete Old Backups ### #   find $dpath -maxdepth 1 -type d -mtime +$dayexp -exec rm -rf {} \; ### Check exist snapshot ### #  , ,   if (( "`btrfs subvolume list $path | grep backup_script |wc -l`" > 0 )) then echo "Warning: Snapshot exist, deleting" btrfs subvolume delete $spath fi ### Create snapshot ### #  btrfs subvolume snapshot $path $spath ### Rsync ### #    rsync -aAXv $spath $dpath$day ### Delete snapshot ### #  btrfs subvolume delete $spath echo "Backup succesful complete" echo "Date_end: `date +%Y-%m-%d-%H-%M-%S`" exit 0 



рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирдВрдмрд░ 2 рд░реВрдЯ рдПрдлрдПрд╕ рдХрд╛ рд╕реНрдиреИрдкрд╢реЙрдЯ рдмрдирд╛рддрд╛ рд╣реИ (рд╕реНрдХреНрд░рд┐рдкреНрдЯ 1 рддрд░реНрдХ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреЗрд╡рд▓ рдорддрднреЗрджреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реВрдВрдЧрд╛)ред рд╕реНрдиреИрдкрд╢реЙрдЯ рдХрд╛ рдирд╛рдо auto_ "day number" рд╣реИред
рд▓рд┐рдкрд┐ рд╕рдВрдЦреНрдпрд╛ 2
 #!/bin/bash set -e echo "Date_start: `date +%Y-%m-%d-%H-%M-%S`" ### Vars ### day=$((`date +%s` / (60*60*24))) dayexp=14 path="/" spath="/snapshots/" ### Delete Old Backups / Check existing snapshot ### #  ,      btrfs subvolume list $path |grep auto |sed -e '1,$ s/.*_//g'| while read ONE_OF_LIST do if [[ "$ONE_OF_LIST" -lt "$day - $dayexp" ]] then echo "remove: $spath"auto_"$ONE_OF_LIST" btrfs subvolume delete $spath"auto_"$ONE_OF_LIST fi if [[ "$ONE_OF_LIST" -eq "$day" ]] then echo "Eroor: snapshot auto_$ONE_OF_LIST exist. Stop script execution." exit 1 fi done ### Create snapshot ### btrfs subvolume snapshot $path $spath"auto_"$day ### End ### echo "Snapshot succesful created" echo "Date_end: `date +%Y-%m-%d-%H-%M-%S`" exit 0 



рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирдВрдмрд░ 3 LVM рд╡реЙрд▓реНрдпреВрдо рдХреА рдПрдХ рдкреНрд░рддрд┐ рдмрдирд╛рддрд╛ рд╣реИ:

рд▓рд┐рдкрд┐ рд╕рдВрдЦреНрдпрд╛ 3
 #!/bin/bash set -e echo "Date_start: `date +%Y-%m-%d-%H-%M-%S`" ### Vars ### day=$((`date +%s` / (60*60*24))) dayexp=21 #  LVM  path="/dev/virt_image_array/win_home_system" spath="/dev/virt_image_array/backup_lvm1" dpath="/mnt/backup/lvm1/" ### Delete Old Backups ### find $dpath -maxdepth 1 -type f -mtime +$dayexp -exec rm -rf {} \; ### Check exist snapshot ### #  , ,   if (( "`ls /dev/virt_image_array |grep backup_lvm1|wc -l`" > 0 )) then echo "Warning: Snapshot exist, deleting" lvremove --autobackup y -f $spath fi ### Create snapshot ### # ,      ,      .   10 Gb. lvcreate --size 10G --snapshot --name backup_lvm1 $path #              echo #echo "y"| lvcreate --size 10G -A y --snapshot --name backup_lvm1 $path ### DD ### #   bs,       16M dd if=$spath of=$dpath$day bs=16M ### Delete snapshot ### lvremove --autobackup y -f $spath echo "Backup succesful complete" echo "Date_end: `date +%Y-%m-%d-%H-%M-%S`" exit 0 



рдЪреВрдВрдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ / mnt / рдбреЗрдЯрд╛ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдмреИрдХрдЕрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ 1 рдФрд░ 2 рдХреЗ рд╕рдорд╛рди рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

Crontab рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдХрд┐ рдмреИрдХрдЕрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреА рдмрд╛рд░ (рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдПрдХ рдмреИрдХрдЕрдк рдПрдХ рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рджрд┐рди рдореЗрдВ рдПрдХ рдмрд╛рд░ рд╕реНрдиреИрдкрд╢реЙрдЯ)ред
 20 01 * * 1 /usr/bin/backup_root.sh >> /var/log/backup_root.log 2>&1 50 01 * * 1 /usr/bin/backup_lvm1.sh >> /var/log/backup_lvm.log 2>&1 20 01 * * * /usr/bin/snapshot_root.sh >> /var/log/snapshot_root.log 2>&1 


рдореИрдВ рдФрд░ рдХреНрдпрд╛ рдкреЗрдВрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:



рдпреБрдкреАрдбреАред Onix74 рдиреЗ рдореБрдЭреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреЛ рдЯреНрд╡реАрдХ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреАред

Source: https://habr.com/ru/post/In211917/


All Articles