Сценарий оболочки Linux в файлы сервера резервного копирования

Ваши sshd ветвления для обработки соединения (даже на выполненной отладке). Это кажется мне как ребенок, тихо умирает, как только это собирается взаимодействовать с механизмами аутентификации системы. Это во время, когда это обычно проверяет на UID, GID, и выполняет PAM. Ваш сервер использует LDAP или NIS +?

Лучше выполнять отладку на правильно функционирующем сервере и видеть то, что должно прибыть затем (используйте vimdiff или разность).

У меня есть очень похожая проблема недавно, когда у группы было слишком много участники (длина всех участников была приблизительно 500-600 символами). Хотя это было на Linux.

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

0
задан 3 December 2009 в 02:50
4 ответа

Не изобретайте велосипед - используют dirvish!

2
ответ дан 4 December 2019 в 12:11
  • 1
    да, но для первого сценария в соответствии с Linux it' s хороший материал :) –  Ali Mezgani 3 December 2009 в 03:10
mv Databases.sql.zip sql-backup-`date +%Y-%m-%d`.zip
find *.zip  -mtime +15 -exec rm {} \;

Первая строка меняет имя zip на имя на основе текущей даты, 2-е удаления строки все zip, более старые, чем 15 дней.

1
ответ дан 4 December 2019 в 12:11

Один способ генерировать имена файлов, которые вращаются каждую неделю, состоит в том, чтобы быть использовать date завоевать репутацию или пронумеровать недельного дня:

TODAYS_BACKUP=$(date +'Databases-%a.sql.gz')
mysqldump --all-databases | gzip -9 > /root/backup/$TODAYS_BACKUP

Тот путь, говорят в понедельник перед резервным копированием Базы-данных-Sun.sql.gz были бы резервным копированием yesterdays, Базы-данных-Sat.sql.gz будут то, что от позавчера и т.д. Базы-данных-Mon.sql.gz были бы резервным копированием от одну неделю назад. (Другой способ думать об этом: базы-данных-XXX.sql.gz от последнего XXX.),

После сегодняшнего резервного копирования были бы перезаписаны Базы-данных-Mon.sql.gz.

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

Чтобы иметь вращение каждые ~30 дней, Вы могли использовать %d в течение дня месяца как десятичное число. (Узнайте то, для чего те таинственные Escape % значат в странице справочника strftime.)

Чтобы иметь вращение каждые 15 дней, хорошо..., Вы могли использовать этот взлом:

date +'%s 86400 / 15 %% p' | dc

который считает дни начиная с epoc и берет остаток при делении их на 15.

Недостатки: 1) выглядит замысловатым, 2) не дает Вам продвижение 0 ниже 10..., как я сказал: это - взлом.

Одно примечание стороны: не помещайте пароль в сценарий, где он может быть считан из таблицы процессов, в то время как резервное копирование работает! По крайней мере, поместите его в ~/.my.cnf и защитите это с надлежащими полномочиями файла!

Второе примечание стороны: надлежащий суффикс для файлов, сжатых с gzip .gz. .zip для файлов, сжатых с WinZip, 7zip, и т.д.

Третье примечание стороны: если smbmount перестал работать по некоторым причинам (возможно, сервер снижается), Ваш сценарий запишет резервное копирование на раздел, где точка монтирования, вероятно, заполняя Ваш корневой раздел. Хороший способ принять меры против этого к chmod точка монтирования 000.

1
ответ дан 4 December 2019 в 12:11

вычисление даты

Вот то, как сделать взлом даты транзитного участка с начальным нулем:

rotation="0$(( ( $(date +%s) / 86400 ) % 15 ))"    # add a leading zero
rotation="${rotation: -2}"                         # keep the rightmost 2 chars

Как Вы видите, не необходимо использовать dc.

вращение rsync

Так же к тому, на что другие указали для резервного копирования базы данных, можно создать несколько веб-резервных копий каталога с rsync:

rsync -Carv /var/www /mnt/folder/backup${rotation}/

Это создает каталог, названный "00" до "14" для вращения с 15 резервным копированием. Можно сделать:

rm -rf /mnt/folder/backup${rotation}

Заранее очистить его.

0
ответ дан 4 December 2019 в 12:11
  • 1
    существует много способов сделать это, включая printf(1). мне лично нравится вытаскивать dc каждый раз, когда я могу ;-) –   3 December 2009 в 14:08

Теги

Похожие вопросы