Подключение S3-бакета как диска в Windows и Linux с помощью rclone
Для подключения понадобятся:
- Access Key ID;
- Secret Access Key;
- Имя бакета, который нужно подключить;
- Регион (Ru).
Подготовка необходимых компонентов
Подготовка компонентов для ОС Windows
Этот этап включает загрузку и первоначальную настройку инструментов, которые понадобятся для работы rclone в качестве службы Windows.
- Установить Winfsp: Загрузить и установить дистрибутив Winfsp с официального сайта проекта: https://winfsp.dev/rel/
- Подготовить Sysinternals Suite: Скачать архив с набором утилит Sysinternals Suite: https://learn.microsoft.com/en-us/sysinternals/downloads/ . Распаковать его содержимое в любую удобную папку.
- Загрузить WinSW: Скачать исполняемый файл Windows Service Wrapper (WinSW): https://github.com/winsw/winsw/releases , соответствующий разрядности операционной системы (x86 или x64). Поместить этот файл в отдельную, заранее созданную папку.
- Загрузить rclone: С официального сайта загрузить архив с утилитой rclone: https://rclone.org/downloads/ . Распаковать его в выбранную рабочую папку.
Настройка переменной среды PATH:
Чтобы система могла находить запускаемые файлы из командной строки, необходимо добавить пути к папкам с утилитами в системную переменную PATH.
- Открыть окно редактирования системных переменных среды. Для этого можно через меню “Пуск” начать вводить “Изменение системных переменных среды” и выбрать соответствующий результат. Либо sysdm.cpl.
- В открывшемся окне нажать кнопку “Переменные среды…”.
- В списке системных переменных найти переменную с именем Path, выделить её и нажать “Изменить…”.
- В окне редактора нажать “Создать” и добавить полные пути ко всем папкам, куда распаковали Sysinternals Suite и rclone, а также к папке с файлом WinSW.
- Подтвердить изменения, нажимая “OK” во всех открытых окнах.
Подготовка компонентов для ОС на базе Linux:
- Установить rclone:
sudo curl https://rclone.org/install.sh | sudo bash
Создать папку для монтирования:
sudo mkdir -p /mnt/s3bucket
Сменить владельца директории на вашего пользователя:
sudo chown $USER:$USER /mnt/s3bucket
Установить пакеты fuse:
sudo apt update
sudo apt install fuse
sudo apt install fuse3
Создать группу fuse:
sudo groupadd fuse
Добавить себя в группу fuse:
sudo usermod -a -G fuse $USER
Разрешить монтирование для пользователей. Отредактировать /etc/fuse.conf;
Раскомментировать или добавить строку:
user_allow_other
- Выполнить реавторизацию.
Общий алгоритм настройки подключения
Настройка подключения (Windows)
Открыть PowerShell, перейти в директорию с программой rclone и выполнить команду для её настройки:
./rclone config
В процессе настройки выполнить следующие шаги:
- Создать новый профиль подключения, выбрав пункт n (new);
- Задать имя для подключения;
- Выбрать тип хранилища: 4 (S3);
- Указать провайдера: 47 (Other);
- Для ввода учетных данных выбрать ручной режим (пункт 1);
- Поочередно ввести Access Key и Secret Key;
- В качестве региона указать – Ru;
- Указать endpoint – https://s3-01.slcloud.ru/;
- При запросе дополнительных настроек можно указать значения по умолчанию (просто нажимать Enter).
Настройка подключения (Linux)
Выполнить команду:
rclone config
В процессе настройки выполнить следующие шаги:
- Создать новый профиль подключения, выбрав пункт n (new);
- Задать имя для подключения;
- Выбрать тип хранилища: 4 (S3);
- Указать провайдера: 51 (Other) в зависимости от версии rclone;
- Для ввода учетных данных выбрать ручной режим (пункт 1);
- Поочередно ввести Access Key и Secret Key;
- В качестве региона указать – Ru;
- Указать endpoint – https://s3-01.slcloud.ru/ ;
- При запросе дополнительных настроек можно указать значения по умолчанию (просто нажимать Enter).
Монтирование бакета (Windows)
- Для проверки подключения к бакету выполнить команду:
./rclone ls <имя подключения>:<имя_бакета>
Если все верно, ответ вернет список объектов бакета.
- Для монтирования бакета в файловую систему выполнить команду:
./rclone mount <имя подключения>:<имя_бакета> <любая свободная буква_диска>: --vfs-cache-mode full
После выполнения команды появится новый диск с объектами бакета.
- Для отмонтирования бакета нажать CTRL+C в консоли.
Монтирование бакета (Linux)
Выполнить команду:
rclone mount <имя подключения>:<имя_бакета> /mnt/s3bucket --vfs-cache-mode full --allow-other
Настройка автоматического монтирования (Windows)
Чтобы автоматически подключать бакет при входе пользователя в систему, выполнить два шага:
- Создать скрипт запуска VBScript (https://ru.wikipedia.org/wiki/VBScript )
В своей рабочей папке создать файл bucket_mount.vbs и поместить в него следующий код:
CreateObject("Shell.Application").ShellExecute _
"<Путь до rclone.exe>", _
"mount <имя подключения>:<имя_бакета> <любая свободная буква_диска>: --vfs-cache-mode ", _
"", "open", 0
Чтобы добавить скрипт в автозагрузку через реестр, выполните следующие действия:
- Открыть редактор реестра
Запустить regedit.exe через поиск Windows или окно «Выполнить»; - Перейти к нужному разделу
В левой панели перейти по пути: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run; - Создать строковый параметр – bucket-mounter;
- Изменить значение параметра на путь к vbs-скрипту.
Настройка автоматического монтирования (Linux)
- Создать скрипт монтирования:
sudo nano /usr/local/bin/mount-s3bucket.sh
- Вставить в файл текст скрипта:
#!/bin/bash
/usr/bin/rclone mount <имя подключения>:<имя_бакета> /mnt/s3bucket \
--vfs-cache-mode full \
--allow-other \
--umask 000 \
--daemon
- Сделать скрипт исполняемым:
sudo chmod +x /usr/local/bin/mount-s3bucket.sh
- Добавить в crontab для загрузки:
crontab -e
- Добавить строку:
@reboot /usr/local/bin/mount-s3bucket.sh
Практический пример организации хранения данных в S3 с помощью rclone
В этой статье рассмотрен практический сценарий хранения резервных копий на S3-совместимом объектном хранилище. В качестве примера используется Windows-сервер, на котором сначала создаются локальные бэкапы, а затем они копируются в S3 с помощью rclone. Такой подход особенно полезен в тех случаях, когда программное обеспечение для резервного копирования не умеет работать с S3 напрямую. В этом случае локальная копия становится основным рабочим объектом, а S3 — дополнительной точкой хранения и долгосрочного хранения данных.
Сценарий с локальным бэкапом и последующей загрузкой в S3 удобен по нескольким причинам.
- Наличие последней локальной копии позволяет быстрее и проще выполнять восстановление данных. В аварийной ситуации не нужно сначала скачивать файл из облака — можно сразу использовать локальный архив.
- Для Баз Данных такой подход обычно безопаснее, чем запись резервной копии напрямую на подключённый S3-диск. S3 — это объектное хранилище, а не классический файловый диск, поэтому использование его как “живого” носителя может привести к проблемам с производительностью, блокировками и поведением приложения.
Важно! Для бэкапов, особенно Баз Данных и других критичных сервисов не рекомендуется писать резервную копию напрямую на подключённый S3-диск, смонтированный как файловая система. Rclone и S3 стоит рассматривать именно как дополнительную точку хранения и инструмент долгосрочного хранения, а не как единственный или основной способ создания резервной копии. Такой подход надёжнее, так как снижает риск зависаний, проблем с производительностью и неожиданных ошибок при работе с объектным хранилищем как с файловой системой.
Важно! Все приведённые в статье ссылки на ресурсы разработчиков, скриншоты, примеры скриптов, запросов и команд носят исключительно ознакомительный характер. В дальнейшем интерфейс, структура страниц, содержание документации, функциональные возможности утилит, а также поведение сервисов могут изменяться в зависимости от версии программного обеспечения, обновлений и особенностей конкретной среды. Ссылки могут быть обновлены, перемещены, ограничены по региону или стать недоступными. Перед использованием в рабочей среде рекомендуется дополнительно проверять актуальность информации и адаптировать примеры под собственную инфраструктуру.
Подготовительный этап
- Загрузка и установка WinFsp. WinFsp — это драйверный/системный компонент для виртуальных файловых систем в Windows, необходимый для монтирования облачных и других не-FS-хранилищ как диска.
Для загрузки WinFsp перейдите на сайт разработчика https://winfsp.dev/rel/ и загрузите WinFsp Installer
После загрузки инициируйте установку утилиты, следуя рекомендация мастера установки ![]()
- Загрузка Sysinternals Suite — набор диагностических утилит для Windows, который может понадобиться для проверки работы процессов, блокировок файлов и поиска причин проблем при настройке автоматической загрузки бэкапов в S3 через rclone.
Доступен для загрузки с официального сайта Microsoft: https://learn.microsoft.com/en-us/sysinternals/downloads/

Загруженный архив следует разархивировать в отдельную директорию. ![]()
- Загрузить WinSW – обёртку для запуска обычной программы как службы Windows. Позволяет любому .exe-файлу работать не как ручной запуск в окне, а как служба, которая стартует автоматически вместе с системой и может перезапускаться при сбоях. Потребуется для автоматической и постоянной выгрузки бэкапов без ручного вмешательства. Скачать исполняемый файл, в соответствии с разрядностью ОС (x86 или x64), можно с ресурса: https://github.com/winsw/winsw/releases

Загруженный файл
следует разместить в отдельной директории.
- Загрузить rclone — инструмент для переноса и синхронизации файлов между локальным сервером и объектным хранилищем S3.В нашем сценарии он нужен, чтобы после создания локального бэкапа автоматически загружать его в S3-совместимое хранилище.
Загрузить утилиту, в соответствии с разрядностью ОС (x86 или x64), можно с ресурса разработчика https://rclone.org/downloads/

Загруженный архив
, следует разархивировать в отдельную директорию.
- Настройка переменной среды PATH
Чтобы система могла находить запускаемые файлы из командной строки, необходимо добавить пути к папкам с утилитами в системную переменную PATH. Для этого откройте Свойства системы (System Properties), через меню «Пуск» начать вводить “Изменение системных переменных среды” либо запустите sysdm.cpl.
\
В открывшемся окне выберите «Переменные среды (Environment Variables)»

В списке системных переменных найти переменную с именем Path, выделить её и нажать “Изменить”. Затем в окне редактора нажмите «Создать» и добавить полные пути ко всем папкам, куда распаковали Sysinternals Suite и rclone, а также к папке с файлом WinSW

Подтвердить изменения, нажимая “OK” во всех открытых окнах.
Настройка подключения S3-хранилища через rclone
Что бы запустить процедуру подключения бакета S3 через rclone, запустите PowerShell от имени Администратора. Перейдите в директорию хранения файлов rclone, в данном примере C:\Utilit\rclone , и запустите конфигуратор командой /rclone config
Нажимаем n (New remote) для инициации создания нового подключения и следуем по пунктам мастера настройки подключения rclone:
- Вводим наименование подключения

- На следующем этапе укажите тип хранилища, интересующий нас вариант S3 Compatible, в данной версии rclone идет под номером 4, который и указываем при вводе.

- Далее выбирается S3-провайдер
- Так как искомого нашего в списке не будет, то выбираем вариант с пометкой Other, в данной версии rclone идет под номером 51, который и указываем при вводе.

- На следующем этапе предлагается выбрать способ, откуда rclone будет брать AWS/S3-учётные данные при создании подключения, нам подойдет вариант 1 вводить Access Key ID и Secret Access Key вручную в следующих шагах мастера настройки.

- На следующих этапах введите Access Key ID и Secret Access Key

- Далее в качестве запрашиваемого региона, следует указать Ru

- В качестве точки подключения API Endpoint укажите https://s3-01.slcloud.ru/

- При запросе Option location_constraint пропускаем, на мне требуется задавать регион бакета
- Option acl это настройка прав доступа по умолчанию, которые rclone будет ставить при создании бакета и при загрузке/копировании объектов в S3-совместимое хранилище. Используем вариант по умолчанию private — доступ только владельцу, это значение по умолчанию и самый безопасный вариант. В данной версии rclone идет под номером 1, который и указываем при вводе.

- Option bucket_object_lock_enabled. Пропустим, политику блокировки рассмотрим позже, нажимаем Enter.
- В конце система уточнит требуется ли изменение настройке конфигурации подключения, Нажмите n или сразу Enter если уверены в корректности заданных ранее настроек. Если же в процессе настройки были совершены ошибки, то выберите y.

Затем подтвердите полученную конфигурацию нажав y или сразу Enter для подтверждения.

По завершении настройки можно выйти из конфигуратора выбрав q (Quit config)

Монтирование бакета
После того как целевое подключение было создано можем приступать к подключению, но вначале выполним проверку подключения к бакету, выполнив команду:
./rclone ls <имя подключения>:<имя_бакета>
В данному примере команда будет выглядеть:
./rclone ls backup_s3_CBC_1:test-rk-new-kiri1
Где ls – команда на просмотр содержимого бакета, backup_s3_CBC_1 – наименование настроенного ранее подключения, test-rk-new-kiri1 – наименование уже созданного ранее бакета.
Если вы не получили ошибок, то можно продолжить процедуру, Для монтирования бакета в файловую систему выполнить команду:
./rclone mount <имя подключения>:<имя_бакета> <любая свободная буква_диска>: --vfs-cache-mode full
В данном примере команда будет выглядеть:
./rclone mount backup_s3_CBC_1:test-rk-new-kiri1 z: --vfs-cache-mode full
При появлении ошибки ERROR : symlinks not supported without the --links flag: / можно игнорировать, предупреждение сообщает что Объектные хранилища (S3) не поддерживают нативные символические ссылки (symlinks).
Об успехе операции сообщает: The service rclone has been started. а так же появление в наличии диска Z.

При нажатии в консоли Ctrl + C служба rclone будет остановлена и диск Z будет от монтирован.


Настройка автоматического монтирования
Чтобы автоматически подключать бакет при входе пользователя в систему, выполнить следующие шаги:
- Создать скрипт запуска VBScript (https://ru.wikipedia.org/wiki/VBScript )
В своей рабочей папке создать файл bucket_mount.vbs и поместить в него код следующего образца:
CreateObject("Shell.Application").ShellExecute _
"<Путь до rclone.exe>", _
"mount <имя подключения>:<имя_бакета> <любая свободная буква_диска>: --vfs-cache-mode full ", _
"", "open", 0
Если задача требует монтировать несколько бакетов с того же или разных подключений, то можете использовать код следующего образца:
Set sh = CreateObject("Shell.Application")
sh.ShellExecute "<Путь до rclone.exe>", _
"mount <имя подключения>:<имя_бакета> <любая свободная буква_диска>: --vfs-cache-mode full ", _
"", "open", 0
WScript.Sleep 2000
sh.ShellExecute "<Путь до rclone.exe>", _
"mount <имя подключения>:<имя_бакета> <любая свободная буква_диска>: --vfs-cache-mode full ", _
"", "open", 0
WScript.Sleep 2000
sh.ShellExecute "<Путь до rclone.exe>", _
"mount <имя подключения>:<имя_бакета> <любая свободная буква_диска>: --vfs-cache-mode full ", _
"", "open", 0
Где WScript.Sleep 2000 - пауза 2 секунды для стабильности.
Важно!
Если монтированные диски будут отключаться, или не монтироваться , временно в конце установите 1 вместо 0 , тогда при монтировании каждого диска будет появляться консольное окно, которое покажет ошибки подключения и синтаксиса.
Перед назначением букв дисков - убедитесь, что Z:, Y:, X: и т.д. свободны на всех целевых машинах.Разные remote-имена — в конфиге rclone (%USERPROFILE%\.config\rclone\rclone.conf) должны быть прописаны все подключения: remote1, remote2 и т.д.
Для примера создадим в подготовленной для скриптов директории документ bucket_mount.txt

Откроем и добавим код в рамках которого по уже настроенному подключению бакет test-rk-new-kiri1 будет монтироваться в качестве диска Z, а бакет test-rk-new-kiri2 – в качестве диска Y, через 5 секунд :
Set sh = CreateObject("Shell.Application")
sh.ShellExecute "C:\Utilit\rclone\rclone.exe", _
"mount backup_s3_CBC_1:test-rk-new-kiri1 Z: --vfs-cache-mode full ", _
"", "open", 0
WScript.Sleep 5000
sh.ShellExecute "C:\Utilit\rclone\rclone.exe", _
"mount backup_s3_CBC_1:test-rk-new-kiri2 Y: --vfs-cache-mode full ", _
"", "open", 0
Сохранив файл изменим расширение с .txt на .vbs

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

Так как проверка прошла успешно, от монтируем разом все диски остановкой процесса rclone:
Stop-Process -Name rclone –Force
rclone mount работает как фоновый процесс-демон. Пока процесс rclone.exe активен, диск подключён. Как только процесс завершается, драйвер WinFsp автоматически отключает виртуальный диск. Соответственно если Вам необходимо от монтировать конкретный диск, то потребуется в период неактивности остановить процесс, и скорректировать файл .vbs убрав или закомментировав монтирование уже не актуального диска\бакета.
- Чтобы добавить скрипт в автозагрузку через реестр, выполните следующие действия:
Запустить regedit.exe через поиск Windows или окно «Выполнить»
Перейти к нужному разделу, в левой панели перейти по пути: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run;

Далее необходимо создать строковый параметр – bucket-mounter и изменить значение параметра на путь к vbs-скрипту.

В некоторых сборках Windows будет приемлемым указать в значении явный вариант запуска через wscript.exe, так как при строгих политиках безопасности или изменённых ассоциациях прямое указание .vbs может не сработать, к примеру, так:
wscript.exe "C:\Utilit\scripts\bucket_mount.vbs"

После правки реестра рекомендуется выполнить перезагрузку сервера, с последующей авторизацией под пользователем-администратором, под которым выполнялась настройка, если после этого заявленные на монтирование диски будут доступны\служба rclone.exe активна, то настройки можно считать выполненными успешно.
Копирование данных
Для копирования данных на монтированный диск, существует множество сценариев и подходов к реализации. В качестве примеров реализации рассмотрим несколько ситуаций и базовых подходов к ним. Рассмотрим два подхода с использованием копирования на уровне файловой системы через robocopy c активным кэшированием переносимых данных, а так же с прямым копированием через rclone copy.
Пример 1 (robocopy)
В директории C:\Backup_1 хранятся локальные бэкапы создаваемые при резервном копировании сервера посредством агента сервиса Кибер Бэкап Облачный.

Особенность целевых бэкапов в том, что изменения пишутся в исходный файл, а не в новый, что ограничивает варианты к реализации копирования новых данных, а также очистке устаревших. В таком случае эффективным подходом при каждом копировании на монтированный диск \ бакт S3 записывать данные в новую директорию, так же этот подход будет полезным если бэкапы будут писаться в отдельные новые файлы но файл сборки будет одноименный и перезаписываться. Для этого запустим PowerShell ISE и вставим код:
# Исходная папка с локальными бэкапами
$Source = "C:\Backup_1"
# Буква смонтированного диска rclone
$Drive = "Z:"
# Создаём имя папки с сегодняшней датой
$DateStamp = Get-Date -Format "yyyy-MM-dd"
$Dest = "$Drive\Backup_1\Backup_$DateStamp"
# Создаём целевую папку, если её ещё нет
if (-not (Test-Path $Dest)) {
New-Item -ItemType Directory -Path $Dest -Force | Out-Null
}
# Запускаем копирование
robocopy "$Source" "$Dest" /E /R:1 /W:1
После чего сохраним файл скрипта в отдельной директории. Для проверки работоспособности запустим скрипт и дождемся его выполнения. А также проверим результат через S3 Browser.

Как можем увидеть, данные непосредственно в S3 отобразились не сразу, все дело в том, что rclone с использованием --vfs-cache-mode full (полного кэширования) создаёт локальную копию всех файлов, с которыми вы работаете, чтобы ускорить доступ.
По умолчанию кэш хранится C:\Users\<Ваш_Пользователь>\AppData\Local\rclone\vfs\
При использовании --vfs-cache-mode full работают правила по умолчанию, после того как фоновый процесс загрузил данные на S3, то запустится процедура проверки кэш:
- Частота проверки кэш на предмет устаревших файлов – раз в 1 минуту
- Максимальный общий размер кэша – не ограничен
- Максимальное время с последнего доступа, в течение которого файлы хранятся в кэше – 1 час
Таким образом, после фактической загрузки на S3, если в течении 1 часа к файлам на монтированных через rclone дискам не будет обращений, то они автоматически удаляться из кэша. Если после отчистки вновь обратиться к целевым данным, к примеру, для восстановления данных из бэкапа, то взаимодействие будет идти уже напрямую с S3.
Для более эффективного контроля ресурсов модернизируем ранее созданный скрипт (bucket_mount.vbs) монтирования дисков\бакетов с S3, добавив следующие ключи:
--vfs-cache-max-age 1h - Файлы будут автоматически удаляться из кэша, если к ним не обращались более 1 часа
--vfs-cache-max-size 20G - Жёсткий лимит на общий размер кэша. При превышении rclone удалит самые старые файлы (это будет актуально при активном использовании и работе с множеством файлов не большого объёма)
--cache-dir C:\Utilit\RcloneCach\ - Явное указание директории, где rclone будет хранить временные данные, так как по умолчанию временные данные хранятся на диске C, при работе с данными большого объема, будет эффективнее хранить их на отдельном диске, путь C:\Utilit\RcloneCach\ к новому кэшу указан только в качестве примера и демонстрации.
Итоговый вариант скрипта монтирования:
Set sh = CreateObject("Shell.Application")
sh.ShellExecute "C:\Utilit\rclone\rclone.exe", _
"mount backup_s3_CBC_1:test-rk-new-kiri1 Z: --vfs-cache-mode full --vfs-cache-max-age 1h --vfs-cache-max-size 20G --cache-dir C:\Utilit\RcloneCach\ ", _
"", "open", 0
WScript.Sleep 5000
sh.ShellExecute "C:\Utilit\rclone\rclone.exe", _
"mount backup_s3_CBC_1:test-rk-new-kiri2 Y: --vfs-cache-mode full --vfs-cache-max-age 1h --vfs-cache-max-size 20G --cache-dir C:\Utilit\RcloneCach\ ", _
"", "open", 0
Для применения, остановим службу rclone , выполнив команду Stop-Process -Name rclone -Force, предварительно убедившись, что к данным на монтированных дисках нет обращений. После того как диски будут от монтированы, внесем и сохраним изменения в файле bucket_mount.vbs , после чего запустим скрипт для повторного монтирования.
Для проверки запустим ранее подготовленный скрипт Backup_1.ps1 и посмотрим на результат, временные данные появились в новой кэш-директории

Соответственно, как только один из файлов был загружен в S3 он сразу же удалился из кэш-директории, не дожидаясь 1 часа, так как суммарный объем данных в кэш превысил заданные в скрипте 20 GB

Пример 2 (rclone copy)
В данном пример мы рассмотрим пример работы с уникальными файлами, где бэкап пишется в новый файл, а также нам потребуется работать с множеством файлов небольшого объема
Тут мы воспользуемся функциями копирования самого rclone и направим напрямую данные в S3, используя скрипт:
& "C:\Utilit\rclone\rclone.exe" copy "C:\Backup_2" "backup_s3_CBC_1:test-rk-new-kiri2/Backup_1" --include "*.bak" --progress --transfers 4 --retries 3
Разберем синтаксис подробнее:
«C:\Utilit\rclone\rclone.exe» - абсолютный путь к приложению rclone
«copy» - действие копирования
«C:\Backup_2» - источник
« backup_s3_CBC_1:test-rk-new-kiri2/Backup_1» - принимающее подключение бакет\конечная директория в S3
« --include "*.bak"» - ключ исключения, при совпадении имен файлов с расширением .bak - гарантирует, что загрузятся только архивы указанного расширения.
«--progress» - прогресс выполнения, живая статистика в консоли
«--transfers 4» - параллельные потоки в загрузке
«--retries 3» - повторные попытки при ошибке, Если передача файла прервётся (обрыв сети, таймаут, временная ошибка S3), rclone попробует загрузить его ещё указанное количество раз.
Важно отметить, что rclone при совпадении имен файлов на конечной точке и в источнике, будет их пропускать автоматически, соответственно, если бэкапы пишутся в один и тот же файл или будет присутствовать файл конфигурации с сохраняемым наименованием, то данный вариант не подойдет.
Дополнительно rclone предоставляет функцию легирования, что позволит как контролировать процесс выполнения задачи, так и провести первичную диагностику при сбоях. Модифицируем скрипт.
Добавим создание директории для хранения логов
$LogDir = "C:\Utilit\Logs"
if (-not (Test-Path $LogDir)) { New-Item -ItemType Directory -Path $LogDir -Force | Out-Null }
Сформируем имя лога с датой и временем
$LogFile = "$LogDir\rclone_$(Get-Date -Format 'yyyy-MM-dd_HH-mm').log"
А так же добавим два ключа :
«--log-file $LogFile `» - обозначим переменную на основе которое будет браться принцип наименования лог-файла
«--log-level INFO» - ключ вызова функции логирования, в данном ключе можно использовать стандартный вариант INFO, для записи базовых показателей, NOTICE – для минимальных данных, DEBUG – для полной отладки.
Итоговый вариант скрипта:
$LogDir = "C:\Utilit\Logs"
if (-not (Test-Path $LogDir)) { New-Item -ItemType Directory -Path $LogDir -Force | Out-Null }
$LogFile = "$LogDir\rclone_$(Get-Date -Format 'yyyy-MM-dd_HH-mm').log"
& "C:\Utilit\rclone\rclone.exe" copy "C:\Backup_2" "backup_s3_CBC_1:test-rk-new-kiri2/Backup_1" `
--include "*.bak" `
--progress `
--transfers 4 `
--retries 3 `
--log-file $LogFile `
--log-level INFO
Проверим результат, после завершения копирования данные отобразились в S3, а также записался лог-файл.

Если задача требует загрузки данных, каждый раз в новую директорию, как в Примере 1, то добавим в скрипт скорректированный путь с созданием папки на текущую дату и запишем ее в переменную
$Dest = "backup_s3_CBC_1:test-rk-new-kiri2/Backup_1/$(Get-Date -Format 'yyyy-MM-dd')"
Получим следующий вариант скрипта:
$LogDir = "C:\Utilit\Logs"
if (-not (Test-Path $LogDir)) { New-Item -ItemType Directory -Path $LogDir -Force | Out-Null }
$LogFile = "$LogDir\rclone_$(Get-Date -Format 'yyyy-MM-dd_HH-mm').log"
$Dest = "backup_s3_CBC_1:test-rk-new-kiri2/Backup_1/$(Get-Date -Format 'yyyy-MM-dd')"
& "C:\Utilit\rclone\rclone.exe" copy "C:\Backup_2" $Dest `
--include "*.bak" `
--progress `
--transfers 4 `
--retries 3 `
--log-file $LogFile `
--log-level INFO
В результате данные будут записаны, в новую директорию с текущей датой

Отчистка устаревших копий
Для отчистки устаревших данных, в соответствии с датой последнего изменения, так же существует два подхода через уровень файловой системы и через rclone.
Вариант 1
Работает через стандартные командлеты Windows. Подходит, если диск уже смонтирован. Важно отметить, что этот способ может работать медленно из-за задержек FUSE-драйвера и локального кэша.
$Path = "Z:\Backup_1" # Путь к корневой директории, в которой храниться файлы и папки с целевыми данными
$Days = 30 # Удалять файлы старше N дней
$RootItem = Get-Item $Path # Получаем полный путь к корневой папке для исключения
# Фильтруем содержимое
Get-ChildItem -Path $Path -Recurse -Force | Where-Object {
# Исключаем саму папку Backup_1 из удаления
$_.FullName -ne $RootItem.FullName -and
# Удаляем только то, что старше заданного срока
$_.LastWriteTime -lt (Get-Date).AddDays(-$Days)
} | Remove-Item -Force -Recurse -WhatIf
Важно! Необходимо именно исключать корневую директорию из проверки, в противном случае, Get-ChildItem вернет и её саму, и если LastWriteTime был старше указанного периода, то Remove-Item удалит весь корневой каталог.
Вариант 2
Работает мгновенно через API S3, не зависит от буквы диска и кэша. Самый надёжный способ для объектных хранилищ.
$Rclone = "C:\Utilit\rclone\rclone.exe"
$Remote = "backup_s3_CBC_1:test-rk-new-kiri2/Backup_1/" # Ваш remote и путь
$Days = 30 # Удалять старше N дней
& $Rclone delete $Remote --min-age "${Days}d"
Общие рекомендации
Для корректной работы с rclone и организации резервного копирования данных на S3 необходимо учитывать:
- Условия для корректной работы с rclone:
- Активность пользователя: rclone mount требует активной сессии пользователя. Монтирование должно выполняться под учетной записью администратора, которая регулярно входит в систему. При выходе пользователя или блокировке сессии диски автоматически отмонтируются.
- Стабильное сетевое соединение: Минимальная скорость upload 10 Мбит/с. При нестабильном интернете используйте ключи --retries 5 --low-level-retries 10.
- Свободные ресурсы: Минимум 4 ГБ RAM и 20 ГБ на диске для кэша (Исходя из полного размера загружаемых данных). Мониторинг использования через Диспетчер задач.
- WinFSP драйвер: Обновляйте до последней версии. При проблемах с монтированием переустанавливайте.
- Антивирус: Добавьте папки rclone (кэш, config, исполняемый файл) в исключения.
- Если в S3 используется Object Lock, нужно заранее продумать правила хранения. Это полезно для защиты от несанкционированного удаления, но при неправильной настройке может привести к избыточному хранению данных. Общие рекомендации:
- Использовать retention period для обычного срока хранения.
- Применять governance mode, если нужно защититься от случайного удаления, но при этом сохранить возможность управляемого принудительного удаления.
- Применять legal hold только точечно и временно, когда нужно полностью запретить удаление без указания срока окончания.
Подробнее про работу Object Lock можно ознакомиться в статье: https://cloud.softline.ru/faq/s3-hranilische-faq/worm-politiki/
- Если задача состоит не только в хранении бэкапов, но и в ограничении загрузки файлов неактуальных расширений, можно рассмотреть не только File Server Resource Manager. Альтернативы:
- NTFS permissions и групповые политики. Подходят, если нужно ограничить доступ на уровне прав.
- PowerShell-скрипты. Удобны для регулярной проверки папок и удаления файлов по расширению, размеру или имени.
- Сторонние DLP / Endpoint Protection решения. Подходят, если нужен более жёсткий контроль пользовательской активности.
- Фильтрация на уровне сетевой шары. Полезна, если нужно управлять не только доступом, но и правилами размещения файлов.
- Общие рекомендации по планированию расписания
- Планируйте резервное копирование в период минимальной нагрузки на сервер и сеть, чтобы не мешать работе пользователей и другим сервисам.
- Разделяйте задачи по времени: монтирование бакетов, копирование данных, проверка результата и очистка устаревших копий лучше выполнять отдельно, с запасом между этапами.
- Учитывайте активность пользователей: если для работы используется rclone mount, запускать монтирование и копирование следует в то время, когда пользователь будет в системе и сессия не завершится.
- Закладывайте буфер времени между запуском задач, чтобы избежать наложения процессов и дать системе время завершить предыдущую операцию.
- Используйте стабильное ежедневное или еженедельное окно, например, ночью или ранним утром, когда нагрузка на инфраструктуру минимальна.
- Учитывайте длительность копирования: если объем данных большой, лучше выделять отдельный временной интервал, чтобы задача успевала завершиться без принудительной остановки.
- Отдельно планируйте очистку старых данных: её удобно запускать после успешного копирования или в другое спокойное время, чтобы не создавать дополнительную нагрузку.
- Проверяйте расписание после внедрения: первые несколько запусков стоит контролировать вручную, чтобы убедиться, что задачи выполняются в нужной последовательности и без ошибок.
Не нашли инструкцию?
Заполните форму, и наш специалист свяжется с вами.
Мы дополним информацию и ответим на ваш вопрос.
Оставить заявку