- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Зачем быть уникальным в мире, где все можно скопировать
Почему так важна уникальность текста и как она влияет на SEO
Ingate Organic
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть скриптик backup.sh который лежит тут /root/backup/backup.sh Что он делает наверно все догадались, ну а если быть точнее он запускает процесс синхронизации некоторых данных через shell с другим сервером. Если запустить вот такую штуку
/root/backup/backup.sh >> /var/log/rsync_auto.log
то процесс проходит на ура а если эту строку поставить в крон, то ничего не происходит. Т.е. вообще ничего и в лог не пишет.
может быть крон выполняется с правами, не достаточными для запуска скрипта? (судя по директории)
в этом случае попробуйте увеличить права досткпа к скрипту.
под рутом выполняется крон
Во-первых. Проверьте, чтобы в скрипте был указан шелл, под которым его надо выполнять.
То есть первая строка скрипта должна быть где-то такая: #!/bin/sh
При запуске не из-под другого шелла это обязательно, иначе система не может интерпретировать файл.
Во-вторых, если это не поможет, укажите явно переменную окружения $PATH
В частности в crontab, перед назначенными заданиями должна быть строка:
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin
Если не поможет и это, пишите, будем думать дальше. :)
Чтобы не гадать приведу код
Думаю все должно быть понятно. excludes - это то, что не нужно синхронизировать, includes то что нужно.
Скрипт не мой, да и я не большой спец в них. Нужно ли в данном случае добавлять
#!/bin/sh
Нужно ли в данном случае добавлять
#!/bin/sh
Не нужно. Но надо или полностью указать пути ко всем командам (например, вместо rsync - /usr/local/bin/rsync), либо, после #!/usr/bin/expect -f добавить строку
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin
(или "set PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin")
Да и в самом crontab лучше команду
/root/backup/backup.sh >> /var/log/rsync_auto.log
временно написать так:
/root/backup/backup.sh 2> /var/log/rsync_error.log
Тогда в файле /var/log/rsync_error.log можно будет увидеть в чем неполадка.
Докладываю. Введение PATH ничего не дало.
В логах появляется следующая запись
В логах бэкапсервера видим следующую картину
Вобщем выходит, что он стучится, но его не пускают. Вопрос почему. При запуске в командной строке все работает а из крона не пускает.
Вопрос почему.
Для ssh надо бы еще находить свой ~/.ssh/known_hosts
Иначе будет эта ошибка. Полагаю, надо бы выставить переменную HOME=/root
Это не окончательный вердикт, но похоже. Попробуйте выставить ее в crontab (HOME=/root) или в самом скрипте (set HOME "/root").
Или сделать cat ~/.ssh/known_hosts >> /etc/ssh/ssh_known_hosts
Оттуда он тоже должен его подцепить.
Чтобы не гадать приведу код
Скрипт не мой, да и я не большой спец в них. Нужно ли в данном случае добавлять
#!/bin/sh
Выкинье скрипт и используйте эту строку:
rsync -crlptgu --delete --force -e ssh /где/бекапы логин@хост:/куда/складывать
Естественно что хост надо сделать по ssh-key.
Строку вбиваете прямо в крон. Ну можно еще указать полтный путь к rsync.
Lupus, никаких изменений, тот же результат. С крона не заводится.
Andreyka, можно чуть подробнее. В принципе это тоже самое, только текста меньше:) Как сделать в данном случае
И потом, если приведенную вам строку поставить на крон, то также будет проблема с входом по ssh, пароль спрашивается дополнительно.
Все, всем спасибо. Сделал.
Последний вопрос. Как лучше, не могу для себя решить, Лучше чтобы скрипт запускался на web сервере и сливал все на бэкап сервер или чтобы скрипт запускался на бэкап сервере и сам стягивал все с web сервера?