Архивация системы (несколько скриптов)

Мой первый скрипт :)

echo start archiving etc/...
sudo tar -cvvf etcx.tar /etc/X11/
sudo tar -cvvf etcapt.tar /etc/apt/
echo start archiving var/...
sudo tar -cvvf var.tar /var/cache/apt/archives/
echo start copying...
cp *.tar /media/audio_etc/arh/
echo start deleting...
rm -f *.tar
echo copy is ready!

Комментарии (10)

0
Soi-Fong - 24 Сентябрь, 2008 - 23:00
Изображение пользователя Soi-Fong.

А чем штатные средства, типа Keep не угодили?

Добавлено:

Эх, нет предела совершенству.. не удержался
#!/bin/bash

# перечисляем все директории для бэкапа через пробел, пути абсолютные
dirs="/etc/X11 /etc/apt"
# куда бэкапить
to="/home/soifong/.backup"

for current in $dirs; do
echo -n "Бэкаплю $current :"
name=${current//\//-} # заменяем все слэши на дефисы
name=${name/-/} # убираем первый дефис
echo -n " архивирую"
tar -cvvf /tmp/$name.tar $current &> /dev/null # подавляем вывод
echo -n ", сжимаю"
gzip /tmp/$name.tar
echo ", ныкаю"
mv /tmp/$name.tar.gz $to
done

echo "Все готово"

Кстати:

tar архивы в отличие от зипов и раров сохраняют не только права, но еще и владельца файлов.

0
intsurfer - 25 Сентябрь, 2008 - 13:34

Не работает... Я делаю бэкап на внешний HDD c NTFS и при попытке архивации лезет какая-то ошибка про некорректную кодовую страницу или что-то в этом роде. Текст ошибки на полэкрана вылазит..

Добавлено:

За последнее время скрипт превратился в следующий:
!#/bin/bash
echo start archiving usr/bin...
tar -cvvf usr.tar /usr/
echo start archiving etc/...
tar -cvvf etcx.tar /etc/X11/
tar -cvvf etcapt.tar /etc/apt/
echo start archiving var/...
tar -cvvf var.tar /var/cache/apt/archives/
echo start archiving home...
tar -cvvf homebooks.tar /home/nick/books/
tar -cvvf homeinstall.tar /home/nick/install/
echo start archiving...
gzip usr.tar
gzip etcx.tar
gzip etcapt.tar
gzip var.tar
gzip homebooks.tar
gzip homeinstall.tar
echo start copying...
cp *.tar.gz /media/audio_etc/arh/
echo start deleting...
rm -f *.tar.gz
echo copy is ready!

0
picaro - 28 Сентябрь, 2008 - 17:41
Изображение пользователя picaro.

В скриптах судо не пишут. Лучше запускать с соответствующими правами.
И то, не понятно, на кой чёрт нужен рут если ничего не пишется, а только читается. Для этого, мне кажется, достаточно прав и у обычного юзера.

0
Гость - 15 Январь, 2009 - 19:34

а еще лучше установить бит SIUD на шел скрипт и да будет счастье:))

0
Гал - 20 Май, 2009 - 18:25
Изображение пользователя Гал.

эммм..... Вопрос немного ламерский.)))) А как эти скрипты сохранять и постом соответственно замускать?

+3
picaro - 20 Май, 2009 - 19:41
Изображение пользователя picaro.

Создаёшь текстовый файл, пишешь туда текст скрипта, делаешь сним
$ chmod +x ./scripname.sh
А потом вызываешь его в консоле
$ ./scriptname

0
balamutick - 21 Май, 2009 - 11:17
Изображение пользователя balamutick.

Soi-Fong - можешь указать, какую нужно строчку дописать к тебе в скрипт, чтобы пакеты автоматически получали имя с кусочком сегодняшнего дня, например так:

21-05-2009*.tar.gz или
21052009*.tar.gz
21.05.2009*.tar.gz

или вообще создавалась отдельная папка с датой
~/.backup/21-05-2009/ и уже в ней лежали файлы backup -а ?

где ~ это полный путь до домашнего каталога текущего пользователя.

+3
Soi-Fong - 21 Май, 2009 - 14:44
Изображение пользователя Soi-Fong.

# куда бэкапить
to="/home/soifong/.backup"

замени на
# куда бэкапить
nowdate=`date +%F`  # %F - формат даты гггг-мм-дд, если надо другой, то man date
to="/home/soifong/.backup/$nowdate"
mkdir -p $to

то есть в итоге получится:
#!/bin/bash

# перечисляем все директории для бэкапа через пробел, пути абсолютные
dirs="/etc/X11 /etc/apt"
# куда бэкапить
nowdate=`date +%F`   # %F - формат даты гггг-мм-дд, если надо другой, то man date
to="/home/soifong/.backup/$nowdate"
mkdir -p $to

for current in $dirs; do
  echo -n "Бэкаплю $current :"
  name=${current//\//-}   # заменяем все слэши на дефисы
  name=${name/-/}         # убираем первый дефис
  echo -n " архивирую"
  tar -cvvf /tmp/$name.tar $current &> /dev/null  # подавляем вывод
  echo -n ", сжимаю"
  gzip /tmp/$name.tar
  echo ", ныкаю"
  mv /tmp/$name.tar.gz $to
done

echo "Все готово"

теперь пусть Ockonal перепишет его на питоне и сделает Qt-гуй ;) останется приделать скрипт восстановления и исправить ошибку с пробелами в путях, потому что пробел используется, как разделитель.

+3
salt - 10 Январь, 2010 - 17:08
Изображение пользователя salt.

Hello, World! Простая система резервного копирования - на мой взгляд, очень полезная статья от IBM.
Автоматизация резервного копирования в Linux - на мой взгляд, ещё одна очень полезная статья от IBM.
Rsync - современный способ синхронизации файлов - очень мощная утилита.
Rsync, Rsync...
Например:
rsync -e "ssh -vp443" --partial --compress-level=9 --progress --timeout=600 -lzogthvr /Data/MyDocuments/ user@remotepc.dyndns.org:/home/user/MyDocuments/
синхронизирует данные из локальной /Data/MyDocuments/ с удаленной user@remotepc.dyndns.org:/home/user/MyDocuments/ по ssh на порту 443 (при условии наличия ключей для ssh)
Можно написать скрипт для анализа кода статуса завершения работы команды rsync и т.д. и.т.п.
А можно написать так:
while [ $? -ne 0 ]; do sleep 2;beep -f 1000 -r 3 -n -f 2000 -n -f 1500 -r 3;rsync -e "ssh -vp443" --partial --compress-level=9 --progress --timeout=600 -lzogthvr /Data/MyDocuments/ user@remoteuserpc.dyndns.org:/home/user/MyDocuments/;done
У меня плохая связь в деревне и соединение с интернетом очень не стабильное, поэтому данная конструкция очень выручает при плохих соединениях и больших объёмах данных.

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры