|
Скрипты: Бэкапы на Яндекс Диск через REST API
#32
![]() Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
Ссылка на вложение:
Ссылка на вложение 2:
Ссылка на вложение 3:
Ссылка на вложение 4:
Ссылка на вложение 5:
|
||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
#18+
В рамках поддержки этого и параллельного форумов возникла задача резервного копирования баз дынных, вложений и системных конфигураций. На момент написания этой заметки общий рабочий объём БД всех форумов примерно 160 ГБ и примерно 120 ГБ вложений. Так как используется сервис Я 360 для работы электронной почты, то логично воспользоваться доступным пространством Яндекс Диска 1 ТБ на пользователя для осуществления задачи резервного копирования данных. Я искал способы, как туда можно копировать архивы, пробовал официальную программу, доступную в консольном варианте, однако функционирование программы не понравилось: программа очевидно предназначена для пользователя и сделана явным образом максимально неудобно для автоматизации какой-либо инфраструктурной задачи, оно и понятно, тут претензий нет, компания коммерческая, хотите инфраструктурный сервис - платите соответствующие деньги. Извернуться с программой можно, но очень неудобно. Случайным образом было найдено решение здесь https://neblog.info/skript-bekapa-na-yandeks-disk?ysclid=lqaufsd6g9584100748 - простой скрипт бэкапа штатными средствами ОС и публикация бэкапов на Яндекс Диск через API. То, что надо! Я и не знал до этого, что Яндекс свободно доступ к API диска предоставляет. Скрипт данного автора меня тоже не совсем устроил, прежде всего потому, что он там всё в один фалй архивирует как проект, а я этого в принципе сделать не могу из-за объема. Но это мелочи, главное, что там приводятся готовые методы работы с API и не надо писать самому, подправить то легче. Соответственно, приведу примеры используемых скриптов для резервного копирования БД и файлов. Скрипт максимально универсален, подправить для себя не составит сложностей. Что может скрипт: - делает бекапы штатными системными средствами - архивирует, выбор сжатия gzip и xz - выкладывает архивы на Яндекс.Диск через API - пишет лог и отправляет уведомления на почту - удаляет локальные архивные файлы бэкапов после выгрузки на Яндекс.Диск - может удалять файлы в Яндекс.Диск старше чем за указанный период Нюанс: Яндекс ограничивает скорость загрузки для некоторых MIME https://yadisk.readthedocs.io/ru/dev/known_issues.html. Чтобы не ограничивал - достаточно добавить кастомное расширение файла. При необходимости восстановления расширение достаточно удалить и распаковать как обычный архив. Немного замечаний по использованию. Прежде всего нужно создать и зарегистрировать собственное приложение в Яндекс и получить токен. Зарегистрировать приложение необходимо именно по этой ссылке https://oauth.yandex.ru/client/new . Если регистрировать непосредственно из интерфейса Яндекс, то там нет возможности задать приложению права на использование REST API (зачем так сделали - не ясно). После регистрации приложения в Яндекс.Диск в корне появится директория Applications c вашим приложением. Туда и будут файлы загружаться при использовании API.Документация по API Яндекс Диска - https://yandex.ru/dev/disk-api/doc/ru/ Примеры скриптов. Для БД и архивирование файлов. Алгоритм работы: - подготовка архивов - отработка по циклу for... В случае БД просто перечисляю две БД подряд, в случае архивирования директорий - задаю их как переменные, при этом использую разделитель : для именований и далее как с БД, переменные в цикл for... - выгрузка архивов - удаление локальных временных архивов и устаревших на Я.Диск Я полностью сохранил оригинальные комментарии автора в скрипте, ссылку на оригинальный источник + мои исправления и дополнения Бэкап БД (дамп) Код: BASH 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197.
Код: BASH 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193.
Код: BASH 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71.
... |
||||||||||||||||||||||||||||
:
Изменено: 20.10.2025, 13:15 - basename
Нравится:
Не нравится:
|
||||||||||||||||||||||||||||
20.10.2025, 13:04 |
|
Скрипты: Бэкапы на Яндекс Диск через REST API
|
|||
---|---|---|---|
#18+
Пример скрипта синхронизации (специфично для данного окружения, данные вложений синхронизируются с веб-сервера на административный сервер, где выполняется архивирование и выгрузка) Код: BASH 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2025, 13:10 |
|
Скрипты: Бэкапы на Яндекс Диск через REST API
|
|||
---|---|---|---|
#18+
Пример скрипта бэкапа (дамп) БД системы мониторинга Zabbix PostgreSQL Код: BASH 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194.
... |
|||
:
Изменено: 20.10.2025, 13:16 - basename
Нравится:
Не нравится:
|
|||
20.10.2025, 13:14 |
|
Скрипты: Бэкапы на Яндекс Диск через REST API
|
|||
---|---|---|---|
#18+
Пример бэкапа системных конфигураций Код: BASH 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2025, 13:20 |
|
Скрипты: Бэкапы на Яндекс Диск через REST API
|
|||
---|---|---|---|
#18+
Примеры вызова по расписанию из cron Код: BASH 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2025, 13:26 |
|
Скрипты: Бэкапы на Яндекс Диск через REST API
|
|||
---|---|---|---|
#18+
При выгрузке архивов в Яндекс Диск есть нюанс: более 50 ГБ выгрузить нельзя (во всяком случае так было, может сейчас что-то изменилось). Надо будет рассмотреть вариант с автоматизацией разбиения на части. Насколько понимаю в этом случае придётся использовать zip. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2025, 14:15 |
|
|
start [/forum/topic.php?fid=18&msg=38&tid=18]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
19ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 134ms |
0 / 0 |