Консольная утилита Rclone позволяет настроить копирование или синхронизацию данных, хранящихся на вашем локальном компьютере с различными облачными хранилищами, включая Яндекс Диск, Google Drive, OneDrive, Dropbox, любыми S3 совместимым объектными хранилищами и множеством других сервисов. Часто Rclone называют rsync для облака. В этой статье мы рассмотрим сценарий организации автоматического резервного копирования данных с Windows машины, путем синхронизации некоторых файлов и папок с вашего компьютера в Яндекс Диск (по аналогии в качестве облачного хранилища можно использовать любой другой облачный провайдер).
Rclone: настройка подключения к облачному хранилищу в Windows
Для установки утилиты
rclone
в Windows можно воспользоваться встроенным пакетным менеджером WinGet (или скачайте установщик с официального сайта или GitHub репозитория).
winget install Rclone.Rclone

Rclone это консольная утилита, поэтому для ее запуска и настройки используется интерфейс командной строки. Чтобы запустить интерактивный мастер настройки Rclone, выполните команду:
rclone config
Утилита предложит создать вам новое удаленное хранилище. Чтобы подключить ЯндексДиск в качестве хранилища, последовательно выберите следующие параметры:
- Введите
n(New remote) чтобы создать новое подключение - Задайте имя для подключения, например:
ydisk. - Появится список доступных хранилищ. Найдите в списке Yandex Disk и введите его номер (в моей версии Rclone он доступен под номером
64).
- На шаге
client_idиclient_secretнажмите Enter (оставьте пустыми). - На этапе Edit advanced config, выберите
n - Следующий пункт — Use web browser to automatically authenticate rclone with remote? Введите
y. - Должен открыться браузер, в котором вам нужно выполнить аутентификацию (OAuth) под вашим Яндекс-аккаунтом.
- Разрешите утилите rclone доступ к файлам на Яндекс диске

- Должно появится сообщение об успешном получении токена.

- Подтвердите сохранение конфигурации
y, а затем нажмитеqчтобы выйти из интерактивного режима rclone.
Утилита Rclone сохраняет конфигурационный файл подключения rclone.conf в профиле текущего пользователя. Здесь хранится полученный вам токен доступа к Яндекс диску (access_token). Путь к конфигурационному файлу можно вывести так:
rclone config file
C:\Users\username\AppData\Roaming\rclone\rclone.conf

rclone mount ydisk: Y:
Базовые команды Rclone
Рассмотрим базовые команды утилиты rclone.
Вывести список корневых папок в облаке:
rclone lsd ydisk:
Rclone поддерживает разные режимы синхронизации с облаком, от копирования файлов и директорий до непосредственно синхронизации содержимого директорий, в том числе двусторонней.
Скопировать указанную локальную папку в облако:
rclone copy "C:\Backup" ydisk:HomeBackup --progress
Такая команда скопирует новые и измененный файлы из исходной папки в указанную папку HomeBackup в облаке (если целевая папка отсутствует, она будет создана автоматически).
Благодаря опции
--progress
мы видим текущую скорость копирования и оставшееся время. Если нужно выводить в консоль информацию о каждом обработанном файле, добавьте опцию
-v
(
--verbose
).

Просмотр списка файлов в облачном контейнере:
rclone lsd ydisk:HomeBackup
Удалить определенный файл из хранилища:
rclone delete ydisk:HomeBackup/GPO.zip --verbose –progress
Очистка корзины Яндекс Диска:
rclone cleanup ydisk:

Как было указано выше, команда rclone copy копирует и заменяет только новые и измененный файлы. Если файл был удален в локальной папке-источнике, он не будет удален в облаке.
Если вам нужно настроить полноценную синхронизацию с облаком определенной папки на компьютере, используется опция sync. В этом случае, если файл был удален на локальном компьютере, он также будет удален в облаке:
rclone sync "C:\Backup" ydisk:HomeBackup --progress
Опция rclone sync плохо подходит для резервного копирования данных. Это именно сценарий синхронизации данных. Ведь при случайном удалении/повреждении файла в источнике, он будет автоматически удален и в облаке. Если вы хотите использовать rclone sync для резервного копирования, лучше добавить опцию облачной корзины
--backup-dir
. В этом случае вместо удаления файла в облаке, он будет перемещен в указанную папку:
rclone sync "C:\Backup" ydisk:HomeBackup --backup-dir ydisk:HomeBackup_Trash --progress
Контроля целостности данных на стороне облака. Для защиты от ошибок устройств хранения на стороне облачного провайдера (бывают редко, но лучше знать об этом заранее), можно с некоторой периодичностью выполнять проверку размеров и контрольных сумм файлов в облачном хранилище.
rclone check "C:\Backup" "ydisk:HomeBackup"--one-way
Rclone поддерживает режим двухсторонней синхронизации файлов (
bidirectional
), когда утилита отслеживает изменения как в локальной папке, так и в облаке, и переносит изменения в любом из направлении, где они отличаются. Если вы хотите включить двухстороннюю синхронизацию, то при первом запуске нужно добавить опцию
--resync
:
rclone bisync "C:\Backup" ydisk:BackupFolder --resync
При этом генерируется база данных со структурой и состоянием файлов. После этого можно запускать только регулярные синхронизации (можно запускать через планировщик задач Windows):
rclone bisync "C:\Backup" ydisk:BackupFolder --resilient --conflict-resolve newer
Последние две опции используются для настройки поведения при разрешении конфликтов и ошибок. Опция
--conflict-resolve newer
указывает поведение системы при одновременном изменении файла. Актуальной будет считаться версия файла, созданная позднее. Опция
--resilient
позволяет продолжить работу в случае повреждения (недоступности) исходной базы синхронизации.
В Rclone встроена возможность управления через графический интерфейс rClone Backend в браузере. Для запуска этого интерфейса выполните команду:
rclone rcd --rc-web-gui
Эта команда запустит легкий веб сервер, предоставляющий доступ к управлению rclone через веб-GUI. Здесь вы можете настраивать подключения к хранилищам, просматривать содержимое облачных хранилищ, отслеживать запущенные задачи rclone в реальном времени.

Вывести информацию о доступной и используемой дисковой квоте в Яндекс Диске:
rclone about ydisk

--yandex-spoof-ua
. Эта опция подменяет строку агента в HTTP заголовках, маскируясь под официальный десктопный клиент Яндекс Диск.Дополнительные полезные опции:
- Если копируете много мелких файлов, можно увеличить количество одновременных потоков загрузки с 4 (по умолчанию):
--transfers 8 - При синхронизации больших файлов полезно увеличить размер буфера на каждый поток со стандартных 16 Мб:
--buffer-size 64
Можно исключить некоторые типы файлов или папки из задания синхронизации утилиты Rclone. Список типов файлов для можно указать непосредственно в командной строке:
--exclude "/TMP/" --exclude "*.{log,tmp,bak}" --exclude "Thumbs.db"
Или задать путь к текстовому файлу со списоком исключений:
--filters-file "C:\rclone\filters.txt"
PowerShell скрипт для синхронизации папок с компьютера в Яндекс Диск через Rclone
Рассмотрим пример автоматизации задачи синхронизации содержимого локальных папок с компьютера в облачное хранилище Яндекс. Мы создали небольшой PowerShell скрипт, который синхронизирует несколько локальных папок в Яндекс Диск через Rclone.
Особенности логики этого скрипта:
- В облаке создаются две папки:
current(актуальное зеркало ваших файлов) иarchive(сюда перемещаются старые версии и удаленные файлы). - При каждом запуске
rclone syncобновляет папку current. Если файл на компьютере изменился или был удален, его старая версия отправляется вarchive/YYY-MM-DD. - Специальная команда удаляет из папки archive всё, что старше 60 дней
$Remote = "ydisk:"
$Folders = @("C:\Backup\", "C:\Users\sysops\Documents\keepassDbe.kdbx","C:\Users\sysops\Documents\","F:\Projects")
$Dest = "BackupRclone/DesktopHome/current"
$Archive = "BackupRclone/DesktopHome/archive"
$Timestamp = Get-Date -Format "yyyy-MM-dd"
$ExcludeFile = "$PSScriptRoot\exclude.txt"
$HasErrors = $false
foreach ($F in $Folders) {
if (Test-Path $F) {
$FolderName = Split-Path $F -Leaf
rclone sync $F "$Remote$Dest/$FolderName" --backup-dir "$Remote$Archive/$FolderName/$Timestamp" --exclude-from $ExcludeFile --progress --verbose
if ($LastExitCode -ne 0) { $HasErrors = $true }
}
}
# Удаление версий старше 60 дней (если папки синхронизировались без ошибок)
if (-not $HasErrors) {
# 1. Удаляем в архиве старые файлы старше 60 дней
rclone delete "$Remote$Archive" --min-age 60d --ignore-errors --progress --verbose
# 2. Очищаем пустые папки
rclone rmdirs "$Remote$Archive" --leave-root --progress --verbose
} else {
Write-Error "Ошибка очистки хранилища!"
}
Создаем в планировщике задач Windows задание запуска этого PowerShell скрипта по расписанию (каждый день в указанное время). Можно создать задание из графического интерфейса
taskschd.msc
или такой командой:
$TaskName="RcloneBackuptoYaDisk"
$Trigger = New-ScheduledTaskTrigger -Daily -At 12:00PM
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-NoProfile -ExecutionPolicy Bypass -NonInteractive -WindowStyle Hidden -File C:\Backup\BackupScript\YandexDiskBackup.ps1"
Register-ScheduledTask -TaskName $TaskName -Trigger $Trigger -Action $Action

Шифрование данных в Rclone
Rclone позволяет шифровать данные на стороне клиента перед отправкой в облако. Для этого запустите
rclone config
и создайте новое хранилище типа
crypt
(опция 16 в моем случае):

Новое хранилище создается поверх созданного ранее подключения к Яндекс диску. Просто укажите укажите целевую папку для шифрованных данных (
ydisk:BackupCrypt
).

Выберите тип шифрования имен файлов (например, 1 standard, при котором имена файлов шифруются). Затем включите шифрование директорий (Encrypt directory names=True), задайте свой пароль шифрования или сгенерируйте его автоматически.

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

Например:
rclone copy "C:\Users\sysops\Desktop\keepassDB.kdbx" crypt_ydisk:HomeBackup --progress
Rclone сам на лету зашифрует файлы перед отправкой и сам расшифрует их, если вы захотите скачать их обратно на компьютер. В самом облаке вместо имен файлов и их содержимого злоумышленники или сотрудники Яндекса увидят только нечитаемый набор символов .

При просмотре зашифрованных файлов в хранилище через Rclone с компьютера, их имена отображаться в незашифрованном виде:
rclone lsf crypt_ydisk:HomeBackup

