Сайт Лыткиных
  1. Вы здесь:  
  2. Главная
  3. Блог

Блог

Синхронизация облачных хранилищ пользователя

Информация о материале
Автор: Игорь

В настоящее время нет бесплатного сервиса с открытым исходным кодом, который позволяет синхронизировать несколько облачных хранилищ пользователя без загрузки файлов исходных хранилищ на локальный компьютер. Требуется создать сервис, выполняющий решение задачи.

Поиск аналогичных решений
  • Сервис CloudSync от Bdrive.com требует оплату и установку закрытого кода на локальный компьютер
  • Сервис CloudMounter.net
    • Монтируйте все популярные учетные записи облачных хранилищ как обычные диски и храните свою информацию в безопасности с помощью CloudMounter. В отличие от нативных клиентов Dropbox, Google Drive, MS OneDrive и других провайдеров оно не синхронизирует ваши онлайн-данные, приложение напрямую подключается к облачным серверам, что значительно экономит место на жестком диске вашего компьютера. CloudMounter также шифрует ваши файлы для обеспечения их безопасности.
    • Подключайтесь к облачному хранилищу и экономьте драгоценное место на жестком диске. CloudMounter — это надежный менеджер облачного хранилища, который позволяет пользователям обрабатывать и упорядочивать все файлы, хранящиеся в Интернете. Он объединяет документы, фотографии, видео, приложения, хранящиеся в различных облачных сервисах, таких как Google Drive, OneDrive, Amazon S3 и многих других. Смонтируйте все эти учетные записи как локальные диски на вашем компьютере Mac или Windows и легко выполняйте любые необходимые действия. Приложение предлагает интеграцию Finder и Keychain для пользователей Mac, и все данные можно просматривать в проводнике, если вы используете Windows. Вы будете управлять несколькими учетными записями облачного хранилища для мгновенного доступа ко всем вашим данным и эффективного рабочего процесса. Загрузите это решение для Windows и Mac, чтобы получить полный контроль над своими данными, где бы они ни хранились.
  • Утилита rsync - синхронизирует данные только между физическими носителями информации
  • Microsoft DFS-R - синхронизирует серверы с ОС Windows Server, включённые в домены одного леса MS AD DS.
  • iCloud Drive - синхронизирует для заданной учётной записи Apple Id папку %USERPROFILE%\iCloudDrive с облаком Apple iCloud
  • Microsoft OneDrive - синхронизирует для заданной учётной записи Microsoft заданную папку на компьютере с облаком Microsoft OneDrive
  • Google Drive - синхронизирует для заданной учётной записи Google заданную папку на компьютере с облаком Google
  • Яндекс.Диск - синхронизирует выбранные папки на компьютере с облаком Яндекс.Диск
Математическая постановка задачи

Имеем множество ПарыОблаков пар вида (Источник, Приёмник). Для каждой пары из множества ПарыОблаков нужно провести процедуру синхронизации пары. Каждый Источник и Приёмник представляет собой множество - дерево из каталогов и файлов с атрибутами. Нам нужно обойти каждое дерево и оптимальным образом, за наименьшее возможное время, найти разницу между множествами. После этого нужно добавить или заменить в Приёмнике все каталоги и файлы из Источника, которых нет в Приёмнике, затем удалить на Приёмнике все файлы, которых нет в Источнике.

CloudPairs = { (Source, Receiver) }, где

  • Source = { (file) }, множество файлов в источнике
  • Receiver = { (file) }, множество файлов в приёмнике. 

file = { (path, size, date created, date modified, owner) }, где

  • path - полный путь к файлу от корня
  • size - размер файла,
  • date created - дата и время создания файла,
  • date modified - дата и время изменения файла,
  • owner - владелец файла
Идеи по оптимизации

1. Если каталога из исходного дерева нет в приёмнике - скопировать весь каталог с содержимым, не обходя поддерево в источнике.
2. Если файл в источнике и файлы приёмнике имеет одинаковый путь, но разные размер, дату создания или дату изменения - заменить файл в Приёмнике на файл из Источника.
3. Для каждого файла вычислять хэш-значение, сравнивать файлы по нему.
4. Хранить в базе данных историю обхода дерева источника и приёмника, журнал операций для создания отчётов пользователю.

Идеи по обеспечению безопасности сервиса. 

1. Администратор сервиса не должен иметь технической возможности получения доступа к данным пользователя для аутентификации пользователя в облачном сервисе и/или данным в файлах пользователя.
2. Сервис должен иметь возможность использовать актуальные российские алгоритмы для шифрования и/или электронной подписи данных в облаке.

Программа находится в стадии проектирования.

Источники (в порядке даты публикации)
  • Как использовать Rsync для удаленной и локальной синхронизации данных

  • Новый алгоритм синхронизации Яндекс.Диска: как не подавиться 900 000 файлов

  • Обход дерева

  • Форма записи множества

  • Введение в теорию множеств

    • Н. К. Верещагин, А. Шень. Лекции по математической логике и теории алгоритмов. Часть 1. Начала теории множеств. — 5-е изд., стереотип. — М.: МЦНМО, 2017. — 112 c.
    • On a Property of the Class of all Real Algebraic Numbers. by Georg Cantor Crelle’s Journal for Mathematics, Vol. 77, pp. 258–262 (1874).  

Создано: 17 апреля 2022
Обновлено: 19 апреля 2022

Python

Информация о материале
Автор: Игорь

Объектно-ориентированный язык программирования Python является одним из наиболее востребованных на 2021 год на ИТ-рынке

  • 10 лучших языков программирования в 2021 году
  • CNews названы самые популярные языки программирования

Автор - Ван Россум, Гвидо - Нидерланды

Установка машины разработчика на Microsoft Windows 10

  • Скачать дистрибутив Python
  • Установить IDE PyCharm
  • Настроить учётную запись на GitHub

Материалы для изучения языка (в порядке обнаружения)

  • Как выучить python - YouTube-канал Oldest Junior
  • Курсы Тимофея Хирьянова, МФТИ
    • 2017-2018 Информатика. Алгоритмы и структуры данных на Python 3 - курс 
    • 2020 Практика программирования на Python 3
  • Руководство по Jupyter Notebook для начинающих

  • Mastering Python for Networking and Security Second Edition

Интересные библиотеки

NetworkX - работа с графами

  • NetworkX для удобной работы с сетевыми структурами (09.08.2011)
  •  Introduction to NetworkX in Python (10.06.2020)
  •  Graph Data Science With Python/NetworkX 
  •  Introduction to Data Science - NetworkX Tutorial (10.06.2020)
  • YouTube
    • K Jarrod Millman - Complex network analysis with NetworkX| PyData Global 2020 (см. K Jarrod Millman - Complex network analysis with NetworkX)

 Работа с файлами

  • Хабр - 8 команд для Python по работе с файлами и файловой системой, которые обязательно нужно знать

Microsoft

  • Начало работы с Python в Windows 10

Работа с базами данных

MySQL

Источники

  • Python и MySQL: практическое введение
  • Python MySQL Database Connection using MySQL Connector

Пример программы:

import mysql.connector
from mysql.connector import connect, Error

print("MySQL Connector/Python version: {0}".format(mysql.connector.__version__))

print("Version as tuple:")
print(mysql.connector.__version_info__)
print("")
print("API level: {0}".format(mysql.connector.apilevel))
print("Parameter style: {0}".format(mysql.connector.paramstyle))
print("Thread safe: {0}".format(mysql.connector.threadsafety))

try:
connection = connect(
host="ivlytkin.beget.tech",
user="ivlytkin_zenmon",
password="пароль",
database="ivlytkin_zenmon",
)
print(connection)

if connection.is_connected():
db_Info = connection.get_server_info()
print("Connected to MySQL Server version ", db_Info)
cursor = connection.cursor()
cursor.execute("select database();")
record = cursor.fetchone()
print("You're connected to database: ", record)

show_db_query: str = "SHOW DATABASES"
with connection.cursor() as cursor:
cursor.execute(show_db_query)
for db in cursor:
print(db)

print(connection)

create_movies_table_query = """
CREATE TABLE movies(
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(100),
release_year YEAR(4),
genre VARCHAR(100),
collection_in_mil INT
)
"""
with connection.cursor() as cursor:
cursor.execute(create_movies_table_query)
connection.commit()

create_reviewers_table_query = """
CREATE TABLE reviewers (
id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(100),
last_name VARCHAR(100)
)
"""

with connection.cursor() as cursor:
cursor.execute(create_reviewers_table_query)
connection.commit()

create_ratings_table_query = """
CREATE TABLE ratings (
movie_id INT,
reviewer_id INT,
rating DECIMAL(2,1),
FOREIGN KEY(movie_id) REFERENCES movies(id),
FOREIGN KEY(reviewer_id) REFERENCES reviewers(id),
PRIMARY KEY(movie_id, reviewer_id)
)
"""

with connection.cursor() as cursor:
cursor.execute(create_ratings_table_query)
connection.commit()

except Error as e:
print(e)

PostgreSQL

  • Python PostgreSQL Tutorial Using Psycopg2

 

Создано: 07 декабря 2021
Обновлено: 15 апреля 2022

Zabbix

Информация о материале
Автор: Игорь

Логотип программы Zabbix

Zabbix — свободная система мониторинга и отслеживания статусов разнообразных сервисов компьютерной сети, серверов и сетевого оборудования, написанная Алексеем Владышевым. Для хранения данных используется MySQL, PostgreSQL, SQLite или Oracle Database, веб-интерфейс написан на PHP. Поддерживает несколько видов мониторинга:

  • Simple checks — может проверять доступность и реакцию стандартных сервисов, таких как SMTP или HTTP, без установки какого-либо программного обеспечения на наблюдаемом хосте.
  • Zabbix agent — может быть установлен на UNIX-подобных или Windows-хостах для получения данных о нагрузке процессора, использования сети, дисковом пространстве и так далее.
  • External check — выполнение внешних программ, также поддерживается мониторинг через SNMP.

Zabbix начался в 1998 году как внутренний проект в латвийском банке.

7 апреля 2001 года система была выпущена публично под лицензией GPL[6], первая стабильная версия — 1.0 от 23 марта 2004[6]. В апреле 2005 года была создана латвийская компания SIA Zabbix для управления проектом[7]. Практически ежегодно выпускаются новые версии системы, крупные выпуски: 2.0 (2012), 3.0 (2016), 4.0 (2018), 5.0 (2020), 6.0 (2022).

Установка Zabbix 6.0 на VPS с Ubuntu Server 20.04 LTS

wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-1+ubuntu20.04_all.deb
dpkg -i zabbix-release_6.0-1+ubuntu20.04_all.deb
apt update
sudo -u postgres createuser --pwprompt zabbix
sudo -u postgres createdb -O zabbix Zabbix
zcat /usr/share/doc/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql Zabbix

/etc/zabbix/zabbix_server.conf
DBPassword=zabbix

Файлы журналов

/var/log/zabbix/zabbix_agentd.log
/var/log/zabbix/zabbix_server.log

 

Создано: 15 апреля 2019
Обновлено: 11 апреля 2022

Сервер Singularity

Информация о материале
Автор: Игорь

Цель создания VPS-сервера: тестирование обновления ОС до Ubuntu 19.04 Disco Dingo, изучение СУБД PostgreSQL.

Подключаемся к Ubuntu 18.04 из-под Windows 10 через RDP

Обновление ОС Ubuntu server 19.04 Disco Dingo

  • Ubuntu 19.04 «Disco Dingo» — что нового
  • How To Upgrade To Ubuntu 19.04 (Disco Dingo) Server Today
  • Как обновить Ubuntu до 19.04

 Процедура

1. Обновить Ubuntu до версии 18.10

sudo apt update && sudo apt dist-upgrade && sudo apt autoremove

If you’re upgrading over SSH it’s a good idea to configure SSH server to keep your connection alive so you don’t lose access to your server while upgrading….

Если вы выполняете обновление через SSH, рекомендуется настроить сервер SSH таким образом, чтобы поддерживать подключение, чтобы вы не потеряли доступ к своему серверу во время обновления….

sudo nano /etc/ssh/sshd_config
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#PermitUserEnvironment no
#Compression delayed
ClientAliveInterval 90
#ClientAliveCountMax 3
#UseDNS no

sudo systemctl restart ssh
sudo apt install update-manager-core
sudo nano /etc/update-manager/release-upgrades

# Default behavior for the release upgrader.

[DEFAULT]
# Default prompting and upgrade behavior, valid options:
#
#  never  - Never check for, or allow upgrading to, a new release.
#  normal - Check to see if a new release is available.  If more than one new
#           release is found, the release upgrader will attempt to upgrade to
#           the supported release that immediately succeeds the
#           currently-running release.
#  lts    - Check to see if a new LTS release is available.  The upgrader
#           will attempt to upgrade to the first LTS release available after
#           the currently-running one.  Note that if this option is used and
#           the currently-running release is not itself an LTS release the
#           upgrader will assume prompt was meant to be normal.
Prompt=normal

After changing Ubuntu upgrader settings above, run the commands below to start the upgrade process…  The -c option with the do-release-upgrade command checks for distribution upgrade from the latest supported version…

После изменения вышеуказанных настроек программы обновления Ubuntu выполните следующие команды, чтобы начать процесс обновления ... Опция -c с командой do-release-upgrade проверяет обновление дистрибутива с последней поддерживаемой версии…

sudo do-release-upgrade -c
sudo do-release-upgrade

2. Обновить Ubuntu до версии 19.04

Создано: 05 мая 2019
Обновлено: 06 апреля 2022
  1. Коронавирус
  2. Cython

Подкатегории

Страница 4 из 13

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • Домашняя страница
  • Общая информация
  • Блог
  • Авторизация

Самые читаемые сообщения

  • Библиотека Лыткиных
  • Как Oracle хранит пароли
  • Коронавирус
  • Мои hard skills
  • Волонтеры финансового просвещения

Архивные материалы

  • декабря, 2019
  • июня, 2019
  • мая, 2019
  • апреля, 2019
  • марта, 2019
  • Авторизация
© 2022 Сайт Лыткиных. Все права защищены.
Joomla! CMS - программное обеспечение, распространяемое по лицензии GNU General Public License.
  • ОС Linux c
  • PHP 8.1.3
  • MySQLi 5.7.21-20-beget-5.7.21-20-1-log
  • Время 10:57
  • Кэширование Отключено
  • Gzip Отключено
  • Пользователи 2
  • Материалы 54
  • Кол-во просмотров материалов 142414