Мой первый скрипт :)
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)
А чем штатные средства, типа 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 архивы в отличие от зипов и раров сохраняют не только права, но еще и владельца файлов.
Не работает... Я делаю бэкап на внешний 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!
В скриптах судо не пишут. Лучше запускать с соответствующими правами.
И то, не понятно, на кой чёрт нужен рут если ничего не пишется, а только читается. Для этого, мне кажется, достаточно прав и у обычного юзера.
а еще лучше установить бит SIUD на шел скрипт и да будет счастье:))
эммм..... Вопрос немного ламерский.)))) А как эти скрипты сохранять и постом соответственно замускать?
Создаёшь текстовый файл, пишешь туда текст скрипта, делаешь сним
$ chmod +x ./scripname.sh
А потом вызываешь его в консоле
$ ./scriptname
Soi-Fong - можешь указать, какую нужно строчку дописать к тебе в скрипт, чтобы пакеты автоматически получали имя с кусочком сегодняшнего дня, например так:
21-05-2009*.tar.gz или
21052009*.tar.gz
21.05.2009*.tar.gz
или вообще создавалась отдельная папка с датой
~/.backup/21-05-2009/ и уже в ней лежали файлы backup -а ?
где ~ это полный путь до домашнего каталога текущего пользователя.
# куда бэкапить
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-гуй ;) останется приделать скрипт восстановления и исправить ошибку с пробелами в путях, потому что пробел используется, как разделитель.
Hello, World! Простая система резервного копирования - на мой взгляд, очень полезная статья от IBM.
Автоматизация резервного копирования в Linux - на мой взгляд, ещё одна очень полезная статья от IBM.
Rsync - современный способ синхронизации файлов - очень мощная утилита.
Rsync, Rsync...
Например:
rsync -e "ssh -vp443" --partial --compress-level=9 --progress --timeout=600 -lzogthvr /Data/MyDocuments/ [email protected]:/home/user/MyDocuments/
синхронизирует данные из локальной /Data/MyDocuments/ с удаленной [email protected]:/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/ [email protected]:/home/user/MyDocuments/;done
У меня плохая связь в деревне и соединение с интернетом очень не стабильное, поэтому данная конструкция очень выручает при плохих соединениях и больших объёмах данных.
Создаем свой Ubuntu LiveCD с помощью Remastersys
Отправить комментарий