Простой скрипт для бэкапа

/ Просмотров: 5248
Метки: ,

Это мой самодельный инструмент для бэкапа. На некоторых системах запускается по крону, на других — ручками по мере необходимости.

Собственно, все необходимые пояснения — в самóм скрипте.

(Стянул в незапамятные времена на каком-то форуме идею и алгоритм, теперь уже не упомню где, сорри. Впрочем, от того исходного скрипта осталась только одна строка, да и та изменена).

#!/bin/bash
# Back.sh Скрипт для бэкапа важных файлов и директорий.

#########################################################################
# Список архивируемых файлов и каталогов хранится в файле $HOME/.backList
# (можно назвать его по-другому и разместить в другом месте)
# Права на  файл $HOME/.backList можно выставить 400.
# Формат файла строгий, каждая строка - полное имя файла или директории 
# (в последнем случае со слешем на конце), без комментариев, лишних строк или пробелов. 
#########################################################################
# Объявляем формат даты (какой нам нравится)
    DAT=$(date +%d_%m_%Y)

# Считываем в переменную список сохраняемого из файла $HOME/.backList
    backFrom="$(<$HOME/.backList)"

# Сохраняем в переменную имя будущего архива (LM17Cmain изменяем на своё)
    NAME="LM17Cmain_$DAT"

# Куда сохраняем результат (можно изменить на свой путь)
    backTO="$HOME/Backup/Backup_local"

# Страхуемся от склероза:
if [[ ! -d "$HOME/Backup/Backup_local" ]]; then
   mkdir -p "$HOME/Backup/Backup_local"
fi

# Запускаем цикл архивирования
   for i in $backFrom
      do
# Убираем слеши из путей к файлам и директориям, объявляем результат как переменную
   j=${i//\//-}          
# Собственно архивируем всё, что прописано в $HOME/.backList
    tar -Jcvf $backTO/${j}.tar.xz $i
      done
  wait
# Переходим в папку с созданными tar-архивами
  cd "$backTO"
    # и сжимаем всё в один архив 7z, удаляя затем исходные tar.xz-архивы
  7z a -t7z -mx=9 "$NAME".7z -x!*.7z && find "$backTO" -maxdepth 1 -name "*.tar.xz" -delete ;

# К последней команде можно прикрутить паролирование при необходимости (заменить MyPassword на свой пароль):
#   7z a -t7z -mx=9 -pMyPassword "$NAME".7z -x!*.7z && find "$backTO" -maxdepth 1 -name "*.tar.xz" -delete ;

exit 0
Комментариев: 5 RSS

Простой и понятний скрипт. Вот только у меня почему то не работает сжатие в 7z архив. Никаких ошибок нет, а папка для бекапа пустая. После коментирования строчки сжатия в 7z архив в папке появляються отдельные файлы tar.xz

Где ж Вы раньше были!.. Извините великодушно, движок из-за маленькой ошибки зарезал строку:

NAME="LM17Cmain_$DAT"

т.е. имя будущего архива для 7z, а я и проморгал. Спасибо, Вы углядели, поправил.

Однако все равно должен создаваться архив с именем ".7z". Если не создается, попробуйте в переменных backFrom и backTO развернуть $HOME в полный путь: /home/ваш_логин, а лучше везде развернуть имена в полные пути, и еще раз проверить их правильность.

Дмитрий4
2015-04-21 в 12:37:00

В каком формате писать список " $HOME/.backList " ?

Формат строгий: в каждой строке -- полный путь к файлу или директории (в этом случае с прямым слэшем на конце). Никаких пробелов, комментариев, пустых строк. Права на .backList можно оставить обычные, 644, но я предпочитаю 600.

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

Комментарий будет опубликован после проверки

(обязательно)