Простой скрипт для бэкапа
Это мой самодельный инструмент для бэкапа. На некоторых системах запускается по крону, на других — ручками по мере необходимости.
Собственно, все необходимые пояснения — в самóм скрипте.
(Стянул в незапамятные времена на каком-то форуме идею и алгоритм, теперь уже не упомню где, сорри. Впрочем, от того исходного скрипта осталась только одна строка, да и та изменена).
#!/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
2014-09-24 в 13:32:52
Простой и понятний скрипт. Вот только у меня почему то не работает сжатие в 7z архив. Никаких ошибок нет, а папка для бекапа пустая. После коментирования строчки сжатия в 7z архив в папке появляються отдельные файлы tar.xz
2014-09-24 в 17:27:33
Где ж Вы раньше были!.. Извините великодушно, движок из-за маленькой ошибки зарезал строку:
т.е. имя будущего архива для 7z, а я и проморгал. Спасибо, Вы углядели, поправил.
Однако все равно должен создаваться архив с именем ".7z". Если не создается, попробуйте в переменных backFrom и backTO развернуть $HOME в полный путь: /home/ваш_логин, а лучше везде развернуть имена в полные пути, и еще раз проверить их правильность.
2014-09-24 в 23:03:49
Теперь работает.
2015-04-21 в 12:37:00
В каком формате писать список " $HOME/.backList " ?
2015-04-21 в 13:42:03
Формат строгий: в каждой строке -- полный путь к файлу или директории (в этом случае с прямым слэшем на конце). Никаких пробелов, комментариев, пустых строк. Права на .backList можно оставить обычные, 644, но я предпочитаю 600.