Для комментариев зарегистрироваться или войти
Либо используйте ваш Open_ID, например аккаунт гугл, яндекс или ЖЖ
 

29 сентября 2010 :Как забекапить php файлы на сервере.

Итак, сегодня перед нами с коллегами встала задача сделать систему резервного копирования всех php файлов. Большое спасибо Axel и mr.troll за составление данной статьи.

После проб и ошибок представляем результат (протестировано на системах типа redhat):

# cd /hosting && find ./ -name *.php -exec tar -upvf /backup/phpfiles/php_files_`date +%Y-%m-%d`.tar '{}' + > /dev/null
# gzip -f /backup/phpfiles/php_files_`date +%Y-%m-%d`.tar

Теперь объяснения как оно работает:

  • cd /hosting && -переходим в папку, в которой будем искать пхп файлы.
  • find ./ -name *.php - ищет собственно php файлы в этой папке, можно искать несколько расширений через ключ -regex, но эти регулярные выражения несколько отличаются от обычных, поэтому мы всё таки остановились на данном простом варианте.
  • -exec tar ... '{}' + - в процессе выполнения, команда find запускает собой команду tar, где вместо '{}' - попадает имя файла, как вариант можно запускать через конструкцию "| xargs ".
  • -upvf - ключи к команде tar, важно знать что команда tar вызывается не для всех значений сразу, поэтому нужноиспользовать ключ "u" - который добавляет новый файл в архив, а не "с" - который создаёт каждый раз новый, иначе в архив попадут всего несколько найденных файлов. Также нельзя сразу использовать ключ "z" для архивирования, т.к. tar не умеет дописывать в архивы. Ключ "p" - опционален, сохраняет права файлов.
  • /backup/phpfiles/php_files_`date +%Y-%m-%d`.tar - имя файла куда сохранять бекап, с командой date - можно сохранять отдельные архивы каждый день.
  • > /dev/null - для очистки стека от сообщений вывода команд, иначе все сообщения будут мусорить в логах сервера.
  • gzip - архивируем для экономии места.

Запускать это проще, сохранив скрипт в sh-файл (без решёток в начале строк) и поставив права на запуск для пользователя.

Владельцы сайтов и хостингов легко могут экстраполировать данный скрипт на работу с конкретными папками пользователей, если вместо /hosting - писать папку пользователя "~". После скрипт помещаем в кронтаб пользователю и вуаля...

Для бекапа файлов по всему серверу, как написано выше засовываем это в кронтаб рута. Помните о безопасности и не оставляйте прав на чтения бекапов для посторонних пользователей!


я буду очень признательна если вы прокоментируете эту статью

Комментарии:


Чтобы оставить комментарий нужно зарегистрироваться или войти.
Либо волшебно используйте ваш логин в Google, Яндекс, рамблер или ЖЖ чтобы войти через Open_ID
Оставить комментарий как:
Гость:
Сообщение:
Подпишитесь на статьи через RSS

15 самых популярных статей: