LINUX.ORG.RU

безопасный бэкап ваших данных

 , ,


1

1

привет друзья, утром где-то был тред про бэкап, я не стал выпрашивать у автора скрипт, а написал свой (для себя же).
теперь просто оставляю это здесь.

https://raw.github.com/spfng/bash-backup/master/backup.sh

tar в скрипте используется для создания архива с бэкапом
openssl для шифрования «под пароль», так что бэкап вы можете куда-нибудь залить, хоть в документы во ВКонтакте :3 пароль известен только вам, он записан в скрипте
split/cat для разбиения/склейки файлов.

устанавливаем скрипт:

# wget https://raw.github.com/spfng/bash-backup/master/backup.sh
# chmod +x backup.sh

редактируем: меняем пароль, указываем какую-нибудь директорию для бэкапа, ну например /srv (очень важная, ибо в ней хранятся сайтики).

создаем бэкап:

./backup.sh

и в директории /tmp появился наш бэкап:

# ls -la /tmp/*backup*
-rw-r--r-- 1 root root  10M May 22 17:52 /tmp/1369216375_spfng_backup.tar.00
-rw-r--r-- 1 root root  10M May 22 17:52 /tmp/1369216375_spfng_backup.tar.01
-rw-r--r-- 1 root root  10M May 22 17:52 /tmp/1369216375_spfng_backup.tar.02
-rw-r--r-- 1 root root 491K May 22 17:52 /tmp/1369216375_spfng_backup.tar.03
вообще файлики разбиваются по 100мб, но т.к. у меня бэкап небольшой, я для наглядности разбил по 10мб.

где 1369216375 это имя бэкапа (по-умолчанию date +«%s») и можно задать свое ./backup.sh my-cool-backup, а spfng это хостнейм машины, остальное понятно.

для восстановления бэкапа выполняем ту же команду, только указываем имя бэкапа:

# ./backup.sh 1369216375
и теперь все данные из бэкапа /tmp/1369216375_spfng_backup.tar.* будут распакованы и восстановлены.

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

★★★★★

# echo $(< "смешная-шутка-про-админов-и-бэкапы.txt")

чесание левой ногой через правое ухо

Зачем local в единственной функции скрипта, который выполняется в выделенном шелле? Зачем вообще нужны переменные, ссылающиеся на бинари, если пути к ним захардкожены? Какой смысл делать шифрование, когда пароль лежит тут же, в самом скрипте?

Deleted
()
Ответ на: комментарий от Deleted

Зачем local в единственной функции скрипта, который выполняется в выделенном шелле?

/me пожимает плечами
наверно потому, что глобальные переменные зло.

Зачем вообще нужны переменные, ссылающиеся на бинари, если пути к ним захардкожены?

/me пожимает плечами
наверно, чтобы было легче редактировать, если они лежат в другом месте.

Какой смысл делать шифрование, когда пароль лежит тут же, в самом скрипте?

если хранить бэкапы на локалхосте, то да, зачем вообще шифрование. предпологается, что вы будете их куда-то заливать, во множество мест: ВКонтакте, Dropbox, своя VPS'ка.. ищо куда-нибудь. не знаю. С целью защитить сам бэкап от третьих лиц.

Spoofing ★★★★★
() автор топика

А что, если создать криптоконтейнер, например, на яндекс-диске, смонтированном по webdav, этот контейнер монтировать по паролю и/или ключу и rsync'ать содержимое для бэкапа или восстановления? Насколько это безопасно?

feofan ★★★★★
()

Бэкапы лучше делать со снапшотов, иначе есть риск получить неконсистентные данные (пока скрипт читает начало файла, какой-то процесс изменяет его, ну или группу файлов).

Chaser_Andrey ★★★★★
()
Ответ на: комментарий от feofan

я думал над вариантом сохранять файлы в зашифрованный «контейнер», который монтируется как файловая система - и ею является. а потом вспомнил про KISS и остановился на обычном tar архиве.

вообще да, безопасно. главное данные шифровать. шифровать, а потом выкладывай на любые файлообменники. =)

Spoofing ★★★★★
() автор топика
Ответ на: комментарий от Chaser_Andrey

да, вы правы. ладно, удалю скрипт с гитхаба подальше от позора. и пойду гуглить что-нибудь готовое.

Spoofing ★★★★★
() автор топика
Ответ на: комментарий от Spoofing

У архивов есть минус: данные при бэкапе/восстановлении нужно гнать по сети в полном объеме. При описанном мной варианте будут течь только изменившиеся данные. Но и в моем подходе есть минус: в бэкапе будут лежать только самые свежие данные. Но я думаю, для сохранения истории изменений лучше взять какую-нибудь CVS

feofan ★★★★★
()
Последнее исправление: feofan (всего исправлений: 1)

Хранение пароля в скрипте - вопиющий быдлоскриптинг, в 97 из 100 случаев.

Spirit_of_Stallman ★★★
()
Ответ на: комментарий от Spoofing

наверно потому, что глобальные переменные зло.

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

наверно, чтобы было легче редактировать, если они лежат в другом месте.

man which

http://rosental.virtbox.ru/

Deleted
()

Вот шифрование, упаковка, сжатие и разбивка на тома по 10МБ

encfs --reverse /srv /srv_enc
tar cf - /srv_enc | 7za a -si -v10m archive.tar.7z

anonymous
()

где 1369216375 это имя бэкапа (по-умолчанию date +«%s»)

Вывод работы скрипта:

~# ls -la /tmp/*backup*

-rw-r--r-- 1 root root 624672 May 22 14:05 /tmp/1369220747_kitark_backup.tar.00

-rw-r--r-- 1 root root 624672 May 22 14:07 /tmp/1369220861_kitark_backup.tar.00

-rw-r--r-- 1 root root 788512 May 22 14:08 /tmp/1369220937_kitark_backup.tar.00

kitar ★★★★★
()

тогда давайте так. если скрипт говно - просто «перепрофилируем» его. =)

сделаю две функции в ~/.bashrc, упаковка/распаковка, м это будет обычный зашифрованый tar, в котором можно передавать данные своим друзьям и сообщать ключ для расшифровки. таа-дааа, я изобрел gpg.

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