Помогите разобраться - отправка письма с аттачментом из шела
надеюсь новогодние поздравления рассылаешь?
2) попробуй посмотреть на mail(1 он умеет вроде аттачи сам прикладывать, а вызывает потом тот же самый sendmail.
3. если я использую принципиально неверную технологию для бекапов, и надо делать все совсем по-другому, пожалуйста, напишите, как лучше.rsync или rdiff-backup
Есть момент, что почтовые сервера имеют ограничение на объем аттаченного файла, обычно несколько десятков мегабайт, соответственно, большие данные так точно не забэкапишь.
1. Для первого варианта (класть на другой хостинг) я проглядел man scp, man sftp, задал несколько запросов в поисковиках, но так и не понял, есть ли там простой рецепт, чтобы скрипт сам вводил хост-пароль и копировал. Если я правильно понимаю, то нужно наделать каких-то сертификатов и подложить их в конфиги ssh на обоих серверах, так?.Да, и этот вариант гораздо проще почты, если, конечно возможна прямая связь между серверами.
На сервере, с которого будешь соединяться делаешь:
ssh-keygen -t dsa (далее соглашаешься с путями по умолчанию, а пароль пустой вводишь, т.е. несколько раз enter нажать надо будет)
Далее делаешь:
cat .ssh/id_dsa.pub | ssh backup-sever "mkdir -p .ssh; cat >>.ssh/authorized_keys"
Далее можно уже будет логиниться или делать scp на backup-server без пароля.
- по совету и закинул сертификат с основного хостинга на бекап-хостинг
- по совету синхронизирую две директории с помощью rsync, что избавляет от необходимости чистить старые файлы на бекап-хостинге с помощью дополнительных команд.
Синхронизирующая команда получилась вот такая:
rsync -azv --delete -e ssh ./ backup-hosting:backup-path
Получившаяся система страхует от случайной потери данных (хостинг упал, редактор потер БД но владелец сайта, который попросил меня все это организовать, говорит, что возможна ситуация, когда
Если злоумышленник тырит пароль, то он заходит на src-хостинг, обнаруживает там бекапирующий скрипт, через ssh залезает на backup-хостинг и не просто удаляет все сохраненные копии сайта, но вообще выносит все содержимое бекап-хостинга (а там тоже какой-то мелкий сайтец лежит).
Как лучше переделать систему? Вижу три варианта:
- Сделать на бекап-хостинге фтп-аккаунт с доступом в одну директорию, и валить бекапы туда по фтп. Чтобы если потерли, то одну только эту директорию. Это без rsync'а, видимо. В инете нашлось много готовых скриптов.
- запускать rsync на бекап-хостинге и с задержкой по времени, на пару часов позже создания бекапов на исходном хостинге. Но это немного шило на мыло - если сопрут пароль от бекап-хостинга, то снова все пропало
- оставить скрипты бекапов все как есть, но все пароли пообновлять, пароль от ssh никому не давать и по почте не пересылать
ssh work-server bin/backup-database.sh >db-backup-`date %Y%m%d`.sql
Если хочется оставить инициатором рабочий сервер, то можно на бекапе ограничить ssh. Есть возоможность разрешить только rsync вызывать, например и т.п. Главное, чтобы rsync при этом не удалял и не перезаписывал ничего, а то тоже толку не будет.
можно на бекапе ограничить sshА как это делается? Я могу как-то в конфиге ssh на бекап-сервере прописать, что "вот этому серверу при авторизации по ключу можно выполнять только одну конкретную rsync-команду, и больше ничего нельзя", там есть соответствующие настройки?
В инете предлагают ставить ssh chroot или rssh .
http://chihungchan.blogspot.com/2008/08/restrict-ssh-to-run-...
А так гуглить можно по словам "restricted ssh".
А так гуглить можно по словам "restricted ssh".Можно просто manual page почитать, всё-таки OpenSSH это не GNU программа
ага, значит её разработчики, как и остальные бсдуны только пишут мануалы, но не читают.
Можно просто manual page почитать, всё-таки OpenSSH это не GNU программапоиск в интернетах сейчас обычно более удобен, чем в локальной документации, из-за интеллектуальности поисковых систем
поиск в интернетах сейчас обычно более удобен, чем в локальной документации, из-за интеллектуальности поисковых системУдобнее не значит лучше. Релевантнее не значит достовернее. Поисковые системы в принципе не могут понять под какой версией софта ты сейчас сидишь, если не укажешь им явным образом. Поисковые системы, как правило, не могут отличить авторскую документации от how-to написанной красноглазиком, у которого наконец-то получилось осилить некий софт и он этим подвигом так горд, что пишет об этом в блог.
Немного ржаки. Недавно я хотел поискать материалов о взаимодействии протокола Common Address Redundancy Protocol и протокола Duplicate Address Detection, что в IPv6. Акронимы я набрал в гугл
Оставить комментарий
arturabramian
Привет!Исходная задача такая: есть небольшой сайт, нужно делать бекапы БД и сохранять их куда-нибудь. Написан шелл-скрипт, который по крону раз в сутки складывает дампит mysql-БД в dbdump.sql.gz
Я хочу класть копию этого дампа либо на другой хостинг, либо посылать на почту в качестве аттача, либо и то, и другое.
1. Для первого варианта (класть на другой хостинг) я проглядел man scp, man sftp, задал несколько запросов в поисковиках, но так и не понял, есть ли там простой рецепт, чтобы скрипт сам вводил хост-пароль и копировал. Если я правильно понимаю, то нужно наделать каких-то сертификатов и подложить их в конфиги ssh на обоих серверах, так?.
2. Для второго варианта я пишу письмо с помощью sendmail, вот так:
Это один из вариантов, в экспериментах я вставлял и убирал пустую строку между content-type и телом файла, писал application/x-gzip, использовал подсмотренное в яндекс-почте boundary="somestring" тело файла --somestring, и юзал прочее колдовство. Результат такой: при некоторых вариантах, если я приаттачиваю маленький тестовый файл вида
echo "hello world" | gzip > tmp.gz
то он доходит в я.почту нормально, и нормально распаковывается винраром. А если я аттачу dbdump.sql.gz, то файл, который мне предлагает сохранить почта, получается существенно другого размера, чем файл на сервере (разница в несколько сотен байт при общем размере в полмегабайта винрар ругается на плохую контрольную сумму и отказывается распаковывать.
Энторнеты предлагают использовать программу nail, но я хотел бы обойтись имеющимся на сервере функционалом. Сендмейлом ведь умеет это делать, это я где-то лажаю.
Как все-таки правильно приаттачивать файл, чтобы он нормально доходил?
3. если я использую принципиально неверную технологию для бекапов, и надо делать все совсем по-другому, пожалуйста, напишите, как лучше.