Skip to main content

Рэзервовае капіяванне на Яндекс.Диск праз davfs



Рэзервовае капіраванне - важная задача, якую неабходна выконваць на любым сэрвэры, дзе размяшчаюцца важныя дадзеныя. Вырашыць яе можна рознымі метадамі. Для вялікіх сістэм - гэта адпаведнае праграмнае забеспячэнне, здольнае ствараць бэкапы без прыкметнай затрымкі ў працы сервера.

Для сістэм паменш (а-ля сервер з дзясяткам сайтаў) задачу можна вырашаць больш простымі метадамі і з дапамогай самописных скрыптоў, якія капіююць дадзеныя, напрыклад, на Яндекс.Диск. Перавага ў тым, што не трэба марнавацца на дадатковы сервер (альбо спецыяльнае сховішча для бэкапаў, якія прапануюць некаторыя хостеры). І за дзесяць гігабайт, што выдзяляюцца Яндэксам, можа быць дастаткова.



Можна зарэгістраваць выдзеленую стварыў рахунак у Яндэксе, а можна скарыстацца паштовай скрыняй на сваім дамене, які працуе на Пошце для даменаў.

Змест артыкула:

Што трэба для такога бэкапу?

Усё, што спатрэбіцца, - гэта пакет davfs2, з дапамогай якога будзе мантавацца раздзел webdav ў сістэме.

  # Aptitude install davfs2 

Настройка davfs

Яго канфігурацыйныя файлы знаходзяцца ў тэчцы / etc / davfs2. У файле davfs.conf прапісаны ўсе даступныя налады са значэннямі па-змаўчанні. Яго, пакуль што, не будзем чапаць.



Цікавы другі файл - secrets, які змяшчае лагіны, паролі, параметры проксі і сертыфікатаў. Больш канкрэтна - раздзел «Credential Line», дзе трэба прапісаць запіс выгляду:

  / Mnt / yadisk vashemail@yandex.ru vashparol 

Першы аргумент - гэта кропка мантавання, другі - ваша пошта ў Яндэксе (лагін), трэцяя - пароль. Гэта ўсё, што патрабуецца паказаць.

Стварэнне пункту мантавання і запісы ў / etc / fstab

Раздзел трэба кудысьці мантаваць. Як відаць у прыкладзе вышэй, гэта каталог / mnt / yadisk, які можна замяніць на свой. Створым яго з правамі доступу толькі для root:


  # Mkdir -m 0700 / mnt / yadisk 

Пасля чаго рэдагуемы файл / etc / fstab, прапісваючы там радок:

  https://webdav.yandex.ru / mnt / yadisk davfs noauto, noexec, nosuid, file_mode = 0600, dir_mode = 0700 0 0 

Тут першае - адрас для падлучэння да Яндекс.Диску, другая - кропка мантавання, трэцяя - тып файлавай сістэмы, чацвёртая - опцыі.

  • noauto - адключае мантаванне файлавай сістэмы пры запуску АС, альбо камандай mount -a
  • noexec, nosuid - забараняе запуск выкананых файлаў і ўстаноўку suid / sgid бітаў на файлы і тэчкі.
  • file_mode / dir_mode - усталёўвае правы доступу да файлаў і тэчак адпаведна толькі для ўладальніка (root, калі не паказаны карыстальнік і група ў параметрах uid і gid

Чаму б не мантаваць падзел аўтаматычна? Ён патрэбны толькі падчас рэзервовага капіявання. А пасля будзе а) вісець без справы, б) будзе спажываць невялікая колькасць трафіку, сінхранізуючы змесціва.

Пасля захавання fstab можна праверыць, карэктна Ці мантуецца частку камандай mount / mnt / yadisk.

Скрыпт рэзервовага капіявання

У мяне на сэрвэры трохі сайтаў. У асноўным, кантэнт змяняецца нячаста і можна скарыстацца метадам поўнага капіявання.

Для гэтых мэтаў напісаў невялікі прасценькі скрыпт на bash.

  #! / Bin / bash
 # Ініцыялізуючы зменныя
 BACKUPDIR = "/ var / tmp" # Каталог для бэкапаў
 TMPDIR = "backup" # Гадзінны папка для копій файлаў, якая потым архівуецца
 YADISK = "/ mnt / yadisk" # Кропка мантавання
 SQLDIR = "sqldb" # Папка для баз дадзеных
 SQLUSER = "root"
 SQLPASS = "12345"
 TIMEY = $ (date +% F_% H% M% S) # Час у фармаце ГОД-МЕСЯЦ-ДЕНЬ_часминутасекунда
 # Правяраем наяўнасць тэчкі для баз дадзеных, калі яе няма, ствараюцца ўсе неабходныя.
 if [!  -d "$ BACKUPDIR / $ TMPDIR / $ SQLDIR"];  then
 mkdir -p -m 0700 "$ BACKUPDIR / $ TMPDIR / $ SQLDIR"
 fi
 # Падлучальны Яндекс.Диск
 mount "$ YADISK"
 # Создаём бэкапы
 # 1 баз дадзеных
 cd "$ BACKUPDIR / $ TMPDIR / $ SQLDIR"
 for database in `mysql -s -r -e 'SHOW DATABASES' |  grep -v Database |  grep -v information_schema |  grep -v performance_schema |  grep -v mysql`;
 do mysqldump "$ database"> "$ database" .sql; done
 # 2 Усіх карыстальнікаў
 cd /
 tar -cf "$ BACKUPDIR" / "$ TMPDIR" /home.tar home
 # 3 сістэмных налад
 tar -cf "$ BACKUPDIR" / "$ TMPDIR" /system.tar etc var / spool / cron / crontabs
 # Пакаваць у bzip-архіў
 cd "$ BACKUPDIR"
 tar -cjf backup - "$ TIMEY" .tbz2 "$ TMPDIR"
 mv backup - "$ TIMEY" .tbz2 "$ YADISK"
 # Выдаляны часовыя файлы
 rm -r "$ TMPDIR"
 # Выдаляны старыя архівы
 find "$ YADISK" -type f -mtime +4 |  xargs rm -f
 # Адключаем Яндекс.Диск
 umount "$ YADISK"
 exit 1 

Ён запускаецца двойчы ў суткі па крону. Стварае копіі баз дадзеных, вызначаных сістэмных налад, а таксама карыстацкіх дадзеных (сайты). Часткова ён складаецца з скрыпту для капіявання толькі баз дадзеных , апублікаванага раней.

Часам у syslog-е можа з'яўляцца памылка:

  mount.davfs: open files exceed max cache size by 50 MiBytes 

У гэтым выпадку мантуем раздзел Яндекс.Диска і глядзім, што ляжыць у тэчцы lost + found. Вычышчаюцца яе. Затым вычышчаюцца змесціва тэчкі / var / cache / davfs2 /.



Як вы ацэніце артыкул?
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (Пакуль адзнак няма)
Загрузка ...

Дадаць каментар

Ваш e-mail не будзе апублікаваны.