В одной из своих предыдущих статей я рассказывал о том, что объектное хранилище Yandex Cloud не умеет работать с папками. Cоздать то вы их в бакете сможете, но скопировать папку со своего компьютера в бакет уже не сможете. Нет также в Облаке и возможности закинуть в бакет архив и распаковать его там.

Считается, что Object Storage должен иметь плоскую структуру, без вложенностей. Однако почти все сайты не могут обойтись без вложенностей. Например файл этой статьи находится внутри папки /blog. Эта статья имеет тег svelte. Страница с записями с тегом svelte находится внутри папки /tag, которая в свою очередь находится опять же внутри папки /blog. Благодаря вложенностям на сайте формируются зависимости страниц и строятся url.

Кроме папок маршрута, готовый билд проекта содержит папку _app, внутри которой есть еще папки и файлы. В папки падают скрипты и стили, обеспечивающие работоспособность и красоту сайта. Создавать все эти папки руками и следить за тем в какой папке находится тот или иной файл невозможно, поэтому для удобного скидывания файлов из билда на своем компьютере я использую графический S3-клиент под названием S3 Browser.

Суть синхронизации

В своей предыдущей статье я уже рассказывал вам о том, почему решил остановится именно на этой программе для Windows. Не последним аргументом в пользу нее также выступило и наличие удобной утилиты синхронизации между папками на локалке и в Облаке.

Выбираем лучший S3-клиент под Windows для работы с облаком Яндекса

Рассказываю о том, как я выбирал себе программу для работы с Яндекс Облаком и как с ними работать

logo/blog/luchshii-windows-s3-klient-dlya-yandex-cloud

Синхронизация в S3 Browser предусматривает не просто процесс перекидывания файлов из одного места в другое, а гибкую настройку направления копирования файлов и папок, выбора файлов по их состоянию и так далее. Простой пример: в папке _app все файлы скриптов и стилей получают при каждом билде проекта на локальном компьютере уникальное имя, состоящее из цифробуквенной абракадабры. Так вот, если вы будете просто перекидывать файлы и папки в бакет, то новые файлы будут добавляться к старым, при этом старые файлы будут попросту не нужны. Но они не будут заменяться на новые, так как их имя уникальное. Вот в таких случаях и помогает синхронизация.

С помощью S3 Browser можно загружать только новые или измененные файлы, что позволит оптимизировать использование пропускной способности хранилища и сэкономит время. Вам нужно будет просто определить источник и папку назначения и запустить синхронизацию. Минимальная часть синхронизации - это файл. Если даже малая часть файла была изменена в исходной папке, весь файл будет перенесен в папку назначения.

Работа с инструментом синхронизации папок в S3 Browser

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

  1. В строке меню вверху окна открытой программы выбрать Account > Add New Account.

    Настраиваем синхронизацию с Яндекс Облаком в S3 Browser
  2. В открывшемся окне нужно ввести данные своего подключения.

    Настраиваем синхронизацию с Яндекс Облаком в S3 Browser
    • Display name - придумайте имя для подключения.
    • Account type - S3 Compatible Storage.
    • REST Endpoint - storage.yandexcloud.net, если подключаетесь к Облаку Яндекса.
    • Access Key ID - идентификатор ключа, полученный при созданиии сервисного аккаунта.
    • Secret Access Key - секретный ключ, полученный при созданиии сервисного аккаунта.

После этого вы увидите свой аккаунт в меню Accounts. И можно будет к нему подключаться без постоянного ввода данных.

Синхронизируем папки

  1. Чтобы открыть инструмент синхронизации папок заходим в меню Tools > Folder Sync Tool Настраиваем синхронизацию с Яндекс Облаком в S3 Browser
  2. В появившемся окне у вас будет две части - в левой части выбирается источник, то есть искомая папка, а в правой - папка назначения. При этом необязательно чтобы исходной папкой у вас была локальная; вам может потребоваться синхронизировать свой проект и в обратной последовательности - с облака на локалку. Настраиваем синхронизацию с Яндекс Облаком в S3 Browser
  3. При клике на строку с выбором папки у вас появиться окно, где вы можете выбрать удаленный или локальный вариант добавления папки - будет две кнопки Amazon S3 Folder и Local Folder. Кликаем на одну кнопку, затем ищем нужную нам папку на своем компьютере, используя его файловую систему. Нажимаем Выбор папки, чтобы добавить ее в синхронизацию. Рекомендую сразу выбрать папку build, ведь если ваш проект находится на вашем компьютере, то и эта папка имеет постоянный адрес. Это значит, что вы можете указать в одном из полей именно свою папку build, и в последующем вся ваша синхронизация будет происходить буквально в два клика. Затем кликаем по другой строке с выбором папки, выбираем бакет в Облаке. Если вы правильно подключились к Yandex Cloud, то бакет или бакеты выскочат сразу. Выбераем нужный, а затем нажимаем OK и все говово. Настраиваем синхронизацию с Яндекс Облаком в S3 Browser Настраиваем синхронизацию с Яндекс Облаком в S3 Browser
  4. После того как вы выберите папки, обратите внимание, что внизу окна Folder Sync Tool находится целая россыпь активных и неактивных кнопок. Для начала нажмите Analyze. S3 Browser сравнит папки. После сравнение вы увидите иконки, которые скажут вам какие файлы изменены, а какие нет. Затем можете нажать кнопку Synchronize после чего вы увидите файлы в очереди и процесс синхронизации. Настраиваем синхронизацию с Яндекс Облаком в S3 Browser

Также в этой строке с активностями можно по понажимать на кнопки New, Changed, Deleted, чтобы посмотреть какие конкретно файлы будут добавлены при синхронизации, какие изменены, а какие будут удалены.

Настраиваем синхронизацию

После первой синхронизации можно не переживать - ваше задание синхронизации, которое вы сделали, сохранится в программе. Можно задать ему имя. Для этого в том же окне Folder Sync Tool наведите мышью на активную вкладку и при клике правой кнопкой увидите контекстное меню. Там можно удалить вкладку, создать новое задание или переименовать. Кликните на Rename, введите название вкладки/задания и нажмите OK.

Настраиваем синхронизацию с Яндекс Облаком в S3 Browser

Самое важное, на мой взгляд, это возможность настроить то, как у вас будут вести себя файлы и папки при синхронизации. Для этого в нижней строке с кнопками действий активного задания окна Folder Sync Tool нажмите Options.

Настраиваем синхронизацию с Яндекс Облаком в S3 Browser

В настройках у вас будет возможность указать важные параметры синхронизации:

  • Include only new files - S3 Browser будет синхронизировать только новые файлы, измененные файлы будут игнорироваться.
  • Include only changed files - S3 Browser будет синхронизировать только измененные файлы, новые файлы будут игнорироваться.
  • Include both new and changed files - S3 Browser будет синхронизировать и изменные и новые файлы.
  • Настройка Propagate deletions позволяет удалять в папке назначения файлы, которых нет в исходной папке.
  • Use hashes to compare files. Изначально S3 Browser сравнивает файлы на основе даты изменения. Включив эту настройку вы позволите программе анализировать содержимое файла - вычислять хэш локальных файлов и сравнивать его с сохраненным хэшем удаленных файлов. Этот критерий сравнения работает медленнее, чем подход по умолчанию, но является наиболее надежным способом сравнения файлов и обнаружения их изменений.

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

И на этом вроде все. Возможно позднее в эту серию статей про Yandex Cloud и статичный сайт на Svelte будут добавлены еще статьи. Например, пока остается нерешенным вопрос с ошибкой 404 в консоли браузера при перезагрузке страницы. Поэтому при каких-либо важных дополнениях в этой серии будут выходить дополнительные статьи. Спасибо за внимание!