LINUX.ORG.RU
ФорумAdmin

Какие грабли можно встретить, когда делаешь бэкап или восстанавливаешь из него?

 , ,


0

2

Я домашний пользователь. Хочу для собственных нужд, впервые в жизни, начать делать регулярные бэкапы системы и своих данных. Буду ли я это делать с помощью отдельной программы или самописного скрипта - еще не определился. И так как лучше всего учиться на чужом опыте, то прошу вас поделиться своими «шишками», которые вы в свое время набили в этом деле.

Deleted

Главное - не храни бекапы на том же носителе, с которого их делаешь. Если носитель накроется, ты потеряешь все.

amomymous ★★★
()

если восстанавливаешь на другом железе, то регулярно наступал на грабли с udev с persistent-net.rules

vel ★★★★★
()

1. Поудаляй всякие кеши, временные файлы и другой мусор. Каталоги типа «свалка» обычно тоже исключаются из бекапа. Еще полезно поискать большие файлы/каталоги, а то бывает фильмчик заваляется где-то или временный ISOшник.

2. Если бекапишь систему - разберись за что отвечает каждый каталог. Например, /usr/src/linux скорее всего не нужно бекапить (предполагается, что конфиг у тебя где-то сохранен), а вот в /var, как ни странно, бывают жизненно важные данные (например, база данных portage в Gentoo).

3. Обязательно сохраняй аттрибуты (особенно интересно с xattr, всякие context...), владельцев файлов, желательно временные метки.

4. Я тебе очень советую физически отключать носитель после бекапа. У меня уже однажды горел блок питания.

Я бекаплю только данные и конфиг системы. Если не лень разбираться, вот (только замени kroz на себя любимого):

#!/bin/sh

# This script backs up system and home directories

# Preparations:
# - remove all files from ~/.local/trash
# - temporary backup directory ~/.thrumbnails
# - clean cache from opera ~/.opera/cache4 and ~/.opera/cache4/temporary_download
# - delete ~/.azureus ~/.eduke32
#
# Script to findout size of directories to be backed up:
# find .* -maxdepth 0 -type d -exec echo '{}' ';' | grep -v "\.$" | while read D ; do du -hs "$D" ; done
# or
# for A in .* ; do [ "$A" != ".." ] && [ "$A" != "." ] && [ -d "$A" ] && du -hs "$A" ; done

# Mirror disks:
# rsync -aHEWv --force --progress --stats --delete --log-file="backup_mirror.log" "/home/data" "/mnt/removable/"

#Log file
LOG="backup.log"
LOG2="rsync.log"
# Where files to be backed up
DBACKUP="/mnt/data/.backup"
# Directories to be backed up fully, recursivery etc. THERE SHOULD NOT BE TRAILING SLASH '/' !!!
DSYSTEM="/boot
/etc
/root
/root/bin
/var/lib/portage
/home/p2p/.config
/home/kroz/bin
/home/kroz/mine"
# From home directories only .* files and directories will be backed up.
DHOME="/home/kroz
/home/alena"

echo "Beginning backup script">"$LOG"
echo -n "Timestamp: ">>"$LOG"
date +%H:%M:%S.%N >>"$LOG"

mkdir -p "$DBACKUP" 2>/dev/null

echo>>"$LOG"
echo "Backing up SYSTEM directories">>"$LOG"
echo -n "Timestamp: ">>"$LOG"
date +%H:%M:%S.%N >>"$LOG"

echo "$DSYSTEM" | while read D ; do
  echo
  echo "Backing up system directory '$D'..."
  echo "Backing up system directory '$D'...">>"$LOG"
  echo -n "Timestamp: ">>"$LOG"
  date +%H:%M:%S.%N >>"$LOG"
  mkdir -p "$DBACKUP/${D%/*}" 2>/dev/null
  #--delete -n
  rsync -aHEWv --force --progress --stats --delete --log-file="$LOG2" "$D" "$DBACKUP/${D%/*}"
  echo "-- rsync log">>"$LOG"
  cat "$LOG2">>"$LOG"
  echo "-- end of rsync log">>"$LOG"
  rm "$LOG2"
done

echo>>"$LOG"
echo "Backing up of all SYSTEM directories completed">>"$LOG"
echo -n "Timestamp: ">>"$LOG"
date +%H:%M:%S.%N >>"$LOG"
echo>>"$LOG"

echo>>"$LOG"
echo "Backing up HOME directories">>"$LOG"
echo -n "Timestamp: ">>"$LOG"
date +%H:%M:%S.%N >>"$LOG"

echo "$DHOME" | while read D ; do
  echo
  echo "Backing up home directory '$D'..."
  echo "Backing up home directory '$D'...">>"$LOG"
  echo -n "Timestamp: ">>"$LOG"
  date +%H:%M:%S.%N >>"$LOG"

  mkdir -p "$DBACKUP/$D" 2>/dev/null
  
  find "$D" -name ".*" -maxdepth 1 | while read F ; do
    echo "Backing up '$F'...">>"$LOG"
    #--delete -n
    rsync -aHEWv --force --progress --stats --delete --log-file="$LOG2" "$F" "$DBACKUP/$D"
    echo "-- rsync log">>"$LOG"
    cat "$LOG2">>"$LOG"
    echo "-- end of rsync log">>"$LOG"
    rm "$LOG2"
  done
  
  echo "Backing up of home directory completed: '$D'...">>"$LOG"
  echo -n "Timestamp: ">>"$LOG"
  date +%H:%M:%S.%N >>"$LOG"
done

echo>>"$LOG"
echo "Backing up of all HOME directories completed">>"$LOG"
echo -n "Timestamp: ">>"$LOG"
date +%H:%M:%S.%N >>"$LOG"
echo>>"$LOG"

Kroz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.