Цель данной работы — создать архив домашней папки пользователя, положить данный архив в какую-либо локальную папку, скопировать архив в папку dropbox, послать на нужную почту отчет об этом факте, воспользовавшись для этого SMTP-сервером gmail.com.
Я это делаю в ubuntu, но принципиальные отличия для других дистрибутивов будут разве что в установке ssmtp, в остальном отличий быть не должно.
0. Заводим себе аккаунт на getdropbox.com. Кстати — если уж будете регистрироваться, пожалуста, вспользуйтесь моей ссылкой: getdropbox.com. Вам в этом случае сразу отпилят в виде бонуса +250 Мб (при регистрации «напрямую» этого не будет), и мне собственно — тоже, те же самые 250 Мб. Мелочь, а приятно — мегабайты лишними быть не могут.
1. Ставим ssmtp, при помощи которого будем отсылать почту:
root@sysadm-desktop:~# apt-get install ssmtp -y
2. Идем на gmail.com и заводим там себе аккаунт. У нас будет robot@gmail.com.
3. Идем в свою домашнюю папку, и смотрим, что нам нужно бэкапить, а что нет. В соответствии с этим составляем команду для архиватора. У меня вышло вот что:
В файле /etc/ssmtp/revaliases я описал двоих пользователей — от root будем выполнять собственно всю работу через crontab, а для sysadm — для проверки, ну и просто — пусть будет.
Идем в почтовый ящик sysadm@gmail.com, и в папке «Спам» находим свое письмо. Если находим — то все отлично работает! Что бы такие письма не попадали в спам, нужно создать фильтр, и применять на письма от robot@gmail.com какой-нибудь ярлык.
6. Пишем скрипт для всего того, что мы обозначили в самом начале.
Поправить здесь нужно все переменные из самого начала под свою файловую структуру, и — вписать свою строку для архиватора, которую мы составили в п.3. Вроде больше ничего трогать не надо.
Имеем: раз в сутки производится выборочное архивирование домашней папки в два места: в локальный каталог и на сетевой ресурс dropbox, а отчет об этом факте падает на нужную почту.
на Дропбокс хорошо, если канал аплоада(upload) большой. Помню, один раза заливал бэкап файлов Firefox, так это было минимум минут 40. И, кстати, придется периодически все удалять. 2 гига(+ реферальские 250 метров ) — не так уж и много.
как раз по причине ограниченности места… Бэкап хранится один день, потом удаляется и на его место переписывается новый.
Кстати, это место мне не нравится тем, что сначала мы удаляем архив с дропбокса, потом — начинаем переписывать. А на момент переписывания мы остаемся без архива вообще, и если случиться что-нибудь непредвиденное, типа пропадания инета, то мы остаемся без бэкапа. Надо это место как-то покультурнее сделать.
Ну, как я понимаю, сначала бэкапимся в локальную папку — значит какой-то бэкап уже есть. Потом просто проверяем, есть достаточное количество свободного места в Дропбоксе или нет. Если есть, то сначала заливаем бэкап, потом удаляем старый, если же нет, то… тут уже надо подумать. Конечно, можно оставить как сейчас, но можно и поломать мозг, на случай чего-нибудь форс мажорного.
да. наверно надо в две ступени — сначала записать новый архив, потом удалить старый.
единственное — не так просто оказалось из скрипта получить свободное место на дропбоксе, df тут не канает. кстати даже не знаю реально ли это реализовать, ведь дропбоксовый софт — типично гуевый.
Но кажется сдесь присутствующие не понимают как работает эта папочка "~/Dropbox"… Это же не файловая система, а тупо папка, поэтому свободное место там не посмотреть.
И еще вы забываете, что дропбох не удаляет файлы, когда вы их удаляете из этой папки или в вебморде самого дропбокса. Он их просто тупо скрывает, чтобы вы всегда могли их восстановить. Чтобы их удалить надо зайти в вебморду и выбрать режим «показывать удаленные файлы» (или как-то так), а потом уже удалять скрытые файлы. У меня как-то было, что залил я 3 файла по 600 метров, потом один удалил и решил залить другой, на гиг (у меня было 2.25 гига тогда), ан нифига, не вышло, места типа не хватает (через вебморду тогда лил). А вот когда этот скрытый файлик удалил, тогда все оке стало.
Хотя щас может уже и пофиксили, не знаю.
По скрипту (несколько «придирок»): 1.tmp_dir=/home/sysadm/files
Не понимаю, зачем временные файлы хранить в домашнем каталоге. Для них есть папка "/tmp". Просто так правильнее. А временные папки лучше делать так «tmp_dir=$(mktemp -d)», при этом папка т.ж. будет сразу создана и имя у нее будет уникальным.
2. Если мне не изменяет память, такая запись — "--exclude=file1;file2;path3" — тоже допустима (да и понятнее, имхо)
3. А нафига такой простенький скрипт выполнять от рута? Все можно сделать и от обычного пользователя! А в кроне можно задать имя юзера, от которого будет выполняться скрипт. Для этого в /etc/crontab надо добавить строку:
00 01 * * * sysadm /path/to/arc_sysadm
Теперь скрипт будет работать от юзера sysadm и запускаться каждый день в час ночи.
ЗЫЖ Есть классная команда «dropbox puburl ~/Dropbox/Public/FILE», которая возвращает URL к этому файлу ;) ЗЗЫЖ В вики дропбокса есть скрипт на питоне Dropbox Linux CLI. У меня на убунте 9.04 и 8.10 он не заработал, ругался, что у меня плохой интерпретатор и он не может найти путь, хотя все другое работает на ура. Разбираться в чем дело не было времени. Упомянул я его потому, что мне что-то подсказывает, что через него можно будет узнать сколько места на дропбоксе осталось (хотя на все 100 сказать не могу).
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
как раз по причине ограниченности места… Бэкап хранится один день, потом удаляется и на его место переписывается новый.
Кстати, это место мне не нравится тем, что сначала мы удаляем архив с дропбокса, потом — начинаем переписывать. А на момент переписывания мы остаемся без архива вообще, и если случиться что-нибудь непредвиденное, типа пропадания инета, то мы остаемся без бэкапа. Надо это место как-то покультурнее сделать.
единственное — не так просто оказалось из скрипта получить свободное место на дропбоксе, df тут не канает. кстати даже не знаю реально ли это реализовать, ведь дропбоксовый софт — типично гуевый.
Но кажется сдесь присутствующие не понимают как работает эта папочка "~/Dropbox"… Это же не файловая система, а тупо папка, поэтому свободное место там не посмотреть.
И еще вы забываете, что дропбох не удаляет файлы, когда вы их удаляете из этой папки или в вебморде самого дропбокса. Он их просто тупо скрывает, чтобы вы всегда могли их восстановить. Чтобы их удалить надо зайти в вебморду и выбрать режим «показывать удаленные файлы» (или как-то так), а потом уже удалять скрытые файлы. У меня как-то было, что залил я 3 файла по 600 метров, потом один удалил и решил залить другой, на гиг (у меня было 2.25 гига тогда), ан нифига, не вышло, места типа не хватает (через вебморду тогда лил). А вот когда этот скрытый файлик удалил, тогда все оке стало.
Хотя щас может уже и пофиксили, не знаю.
По скрипту (несколько «придирок»):
1. tmp_dir=/home/sysadm/files
Не понимаю, зачем временные файлы хранить в домашнем каталоге. Для них есть папка "/tmp". Просто так правильнее. А временные папки лучше делать так «tmp_dir=$(mktemp -d)», при этом папка т.ж. будет сразу создана и имя у нее будет уникальным.
2. Если мне не изменяет память, такая запись — "--exclude=file1;file2;path3" — тоже допустима (да и понятнее, имхо)
3. А нафига такой простенький скрипт выполнять от рута? Все можно сделать и от обычного пользователя! А в кроне можно задать имя юзера, от которого будет выполняться скрипт. Для этого в /etc/crontab надо добавить строку:
Теперь скрипт будет работать от юзера sysadm и запускаться каждый день в час ночи.
ЗЫЖ Есть классная команда «dropbox puburl ~/Dropbox/Public/FILE», которая возвращает URL к этому файлу ;)
ЗЗЫЖ В вики дропбокса есть скрипт на питоне