March 29

Rclone с нуля: полный гайд для новичков (установка, настройка, примеры)

Полный гайд по синхронизации с облачными дисками через rclone

rclone — это «швейцарский нож» для работы с облачными хранилищами. Позволяет синхронизировать файлы между вашим компьютером и более чем 70 облачными сервисами (Google Drive, Яндекс.Диск, Dropbox, OneDrive и др.), а также между локальными дисками.

📋 Оглавление


Что такое rclone и зачем он нужен

rclone — консольная утилита для синхронизации файлов с облачными хранилищами.

Преимущества:

  • ✅ Работает с 70+ облачными сервисами
  • ✅ Двусторонняя синхронизация (bisync)
  • ✅ Шифрование файлов перед загрузкой
  • ✅ Работа через командную строку (удобно для скриптов)
  • ✅ Бесплатный и открытый исходный код

Примеры использования:

  • Автоматическая синхронизация заметок между ПК и облаком
  • Резервное копирование важных файлов в облако
  • Синхронизация рабочих папок между несколькими компьютерами

Установка rclone

Ubuntu/Linux

Способ 1: Через пакетный менеджер (рекомендуется)

sudo apt update
sudo apt install rclone

Способ 2: Официальный скрипт установки (последняя версия)

curl https://rclone.org/install.sh | sudo bash

Проверка установки

rclone --version

Должно вывести что-то вроде:

rclone v1.65.0

Windows

Способ 1: Через Chocolatey (рекомендуется)

Если установлен Chocolatey:

choco install rclone

Способ 2: Ручная установка

  1. Скачайте архив с официального сайта
  2. Распакуйте в C:\Program Files\rclone
  3. Добавьте папку в переменную среды PATH:
    • Откройте Панель управленияСистемаДополнительные параметры системы
    • Кнопка Переменные среды
    • В разделе Системные переменные найдите Path
    • Нажмите ИзменитьСоздать
    • Добавьте: C:\Program Files\rclone
    • Нажмите OK

Проверка установки

Откройте Command Prompt или PowerShell:

rclone --version

Настройка подключения к облачным сервисам

Google Drive

Шаг 1: Запуск настройки

rclone config

Шаг 2: Создание нового remote

В интерактивном меню:

  1. Введите n (new remote)
  2. Имя remote: gdrive (или любое другое)
  3. Тип сервиса: найдите в списке Google Drive (обычно номер 18-20)
  4. Введите номер и нажмите Enter

Шаг 3: Настройка параметров

Параметр Значение client_id Оставьте пустым (Enter) client_secret Оставьте пустым (Enter) Scope drive (полный доступ) Root folder ID Оставьте пустым Service Account Оставьте пустым Advanced config n (нет)

Шаг 4: Авторизация

  1. Когда появится сообщение про авторизацию, нажмите Enter
  2. Откроется браузер со страницей Google
  3. Войдите в свой аккаунт
  4. Разрешите доступ rclone
  5. Скопируйте код авторизации (если потребуется)
  6. Вставьте код в терминал

Шаг 5: Проверка подключения

rclone lsd gdrive:

Должен показать список папок на вашем Google Drive.


Яндекс.Диск

Шаг 1: Запуск настройки

rclone config

Шаг 2: Создание нового remote

  1. Введите n (new remote)
  2. Имя remote: yandex
  3. Тип сервиса: найдите Yandex Disk (обычно номер 45-50)
  4. Введите номер и нажмите Enter

Шаг 3: Настройка параметров

Параметр Значение client_id Оставьте пустым client_secret Оставьте пустым Advanced config n (нет)

Шаг 4: Авторизация

  1. Нажмите Enter для начала авторизации
  2. Откроется браузер со страницей Яндекс
  3. Войдите в свой аккаунт
  4. Разрешите доступ rclone
  5. Подтвердите авторизацию

Шаг 5: Проверка подключения

rclone lsd yandex:

Основные команды rclone

Команда Описание rclone lsd remote: Показать список папок rclone ls remote:folder Показать список файлов rclone copy source dest Копировать файлы (только новые) rclone sync source dest Синхронизировать (dest = source) rclone bisync path1 path2 Двусторонняя синхронизация rclone move source dest Переместить файлы rclone delete remote:folder Удалить файлы rclone mkdir remote:folder Создать папку rclone size remote:folder Показать размер папки

Примеры:

# Копировать локальную папку в облако
rclone copy /home/user/docs gdrive:backup

# Синхронизировать (односторонняя)
rclone sync /home/user/docs gdrive:docs

# Двусторонняя синхронизация
rclone bisync /home/user/docs gdrive:docs

# Показать содержимое папки
rclone ls gdrive:docs

Как работает синхронизация в rclone

Алгоритм работы copy

rclone copy source dest — копирует файлы из источника в назначение, пропуская уже скопированные.

┌─────────────┐         ┌─────────────┐
│   SOURCE    │         │  DESTINATION│
│   (source)  │  ───►   │   (dest)    │
└─────────────┘         └─────────────┘

Пошаговый алгоритм:

  1. Сканирование источника — rclone обходит все файлы в исходной папке
  2. Проверка каждого файла:
    • Файл существует в destination?
      • Нет → копируется
      • Да → переход к шагу 3
    • Размер файла одинаковый?
      • Нет → копируется
      • Да → сравнивается хеш (MD5/SHA1)
        • Хеши совпадают → файл пропускается
        • Хеши разные → файл копируется
  3. Файлы в destination, которых нет в sourceНЕ удаляются

Важно: copy никогда не удаляет файлы в destination!

Пример:

# Было:
SOURCE: file1.txt, file2.txt, file3.txt
DEST:   file1.txt, file4.txt

# После rclone copy source dest:
SOURCE: file1.txt, file2.txt, file3.txt
DEST:   file1.txt, file4.txt, file2.txt, file3.txt
# file4.txt остался!

Алгоритм работы sync

rclone sync source dest — делает destination идентичным source (односторонняя синхронизация).

┌─────────────┐         ┌─────────────┐
│   SOURCE    │         │  DESTINATION│
│   (source)  │  ───►   │   (dest)    │
│             │    ◄──  │   (clean)   │
└─────────────┘         └─────────────┘

Пошаговый алгоритм:

  1. Сканирование источника — построение списка всех файлов
  2. Сканирование назначения — построение списка файлов в destination
  3. Сравнение списков:
    • Файл есть в source, но нет в dest → копировать
    • Файл есть в обоих, но разный (размер/хеш) → обновить
    • Файл есть в dest, но нет в source → удалить ⚠️
  4. Применение изменений — выполнение копирований и удалений

Важно: sync безвозвратно удаляет файлы в destination, если их нет в source!

Пример:

# Было:
SOURCE: file1.txt, file2.txt
DEST:   file1.txt, file3.txt

# После rclone sync source dest:
SOURCE: file1.txt, file2.txt
DEST:   file1.txt, file2.txt
# file3.txt удалён!

⚠️ Предупреждение: Всегда проверяйте команду с --dry-run перед запуском:

rclone sync source dest --dry-run

Алгоритм работы bisync

rclone bisync path1 path2 — двусторонняя синхронизация, изменения в обоих направлениях.

┌─────────────┐         ┌─────────────┐
│    PATH1    │◄───────►│    PATH2    │
│   (local)   │         │   (cloud)   │
└─────────────┘         └─────────────┘
      ▲                       ▲
      │                       │
      └──────────┬────────────┘
                 │
          ┌──────▼──────┐
          │  WORKDIR    │
          │  (списки)   │
          └─────────────┘

Пошаговый алгоритм:

Шаг 1: Сканирование

1.1. Сканирование Path1 → список файлов A
1.2. Сканирование Path2 → список файлов B
1.3. Загрузка предыдущих списков из workdir:
     - prev_path1.txt (список Path1 с прошлой синхронизации)
     - prev_path2.txt (список Path2 с прошлой синхронизации)

Шаг 2: Выявление изменений

2.1. Сравнение A с prev_path1 → изменения в Path1
     - Новые файлы
     - Изменённые файлы (размер/хеш/время)
     - Удалённые файлы

2.2. Сравнение B с prev_path2 → изменения в Path2
     - Новые файлы
     - Изменённые файлы
     - Удалённые файлы

Шаг 3: Разрешение конфликтов

3.1. Файл изменён только в Path1 → копируем в Path2
3.2. Файл изменён только в Path2 → копируем в Path1
3.3. Файл изменён в обоих (конфликт):
     - Копируем более новую версию (по времени изменения)
     - Старую версию сохраняем с суффиксом .bisync1, .bisync2
3.4. Файл удалён в Path1 → удаляем в Path2
3.5. Файл удалён в Path2 → удаляем в Path1

Шаг 4: Применение изменений

4.1. Копирование новых/изменённых файлов Path1 → Path2
4.2. Копирование новых/изменённых файлов Path2 → Path1
4.3. Удаление удалённых файлов
4.4. Сохранение резервных копий при конфликтах

Шаг 5: Обновление списков

5.1. Сохранение текущего списка Path1 → prev_path1.txt
5.2. Сохранение текущего списка Path2 → prev_path2.txt
5.3. Очистка временных файлов

Работа с workdir:

rclone хранит служебные файлы в workdir (по умолчанию ~/.cache/rclone/bisync):

Файл Описание prev_path1.txt Снимок Path1 с прошлой синхронизации prev_path2.txt Снимок Path2 с прошлой синхронизации RCLONE_TEST Файл для проверки доступа (опционально)

Важно: Не удаляйте workdir между синхронизациями! Это приведёт к ошибке и потребует --resync.


Сравнение методов

Характеристика copy sync bisync Направление → → ↔️ Удаление файлов ❌ Нет ✅ Да ✅ Да Конфликты Н/Д Н/Д ✅ Разрешает Идеально для Резервное копирование Зеркалирование Синхронизация между устройствами Безопасность ⭐⭐⭐ Высокая ⭐⭐ Средняя ⭐⭐⭐ Высокая Скорость ⭐⭐⭐ Быстро ⭐⭐⭐ Быстро ⭐⭐ Медленнее

Визуальное сравнение:

copy:  A ──────► B   (B получает файлы из A)
       (B никогда не чистится)

sync:  A ──────► B   (B становится точной копией A)
       (лишнее в B удаляется)

bisync: A ◄─────► B  (Оба становятся идентичными)
        (конфликты сохраняются)

Когда использовать каждый метод

Используйте copy:

  • ✅ Резервное копирование важных данных
  • ✅ Архивирование файлов
  • ✅ Когда нужно сохранить историю версий

Используйте sync:

  • ✅ Создание точного зеркала
  • ✅ Публикация файлов (односторонняя)
  • ✅ Когда destination — временное хранилище

Используйте bisync:

  • ✅ Синхронизация заметок между устройствами
  • ✅ Общая папка между несколькими компьютерами
  • ✅ Когда изменения могут быть с обеих сторон

⚠️ Критические ошибки и как их избежать

Ошибка 1: Потеря файлов при sync

# ❌ ОПАСНО: Может удалить файлы!
rclone sync /home/user/docs gdrive:backup

# ✅ БЕЗОПАСНО: Сначала проверьте
rclone sync /home/user/docs gdrive:backup --dry-run

Ошибка 2: Удаление workdir при bisync

# ❌ Не делайте так:
rm -rf ~/.cache/rclone/bisync

# ✅ Если нужно сбросить:
rclone bisync path1 path2 --resync

Ошибка 3: Игнорирование логов

# ❌ Без логов сложно отладить
rclone bisync path1 path2

# ✅ С логированием:
rclone bisync path1 path2 --verbose 2>&1 | tee sync.log

Синхронизация между локальными дисками

rclone может работать не только с облаками, но и с локальными дисками. Это полезно для:

  • ✅ Резервного копирования SSD → HDD
  • ✅ Синхронизации между внутренним и внешним диском
  • ✅ Автоматического бэкапа на флешку
  • ✅ Зеркалирования разделов

Настройка локального remote

Локальный диск — это remote типа local. Его можно добавить в конфиг:

rclone config
  1. Введите n (new remote)
  2. Имя: ssd или hdd или backup
  3. Тип сервиса: найдите local (обычно номер 1-3)
  4. Введите номер и нажмите Enter
  5. Готово!

Пример конфига (~/.config/rclone/rclone.conf):

[ssd]
type = local

[hdd]
type = local

Использование локальных remote

# Копирование с SSD на HDD
rclone copy ssd:/home/user/docs hdd:/backup/docs

# Двусторонняя синхронизация
rclone bisync ssd:/projects hdd:/projects

# Синхронизация с удалением
rclone sync ssd:/photos hdd:/backup/photos

Прямая работа с путями (без remote)

Remote для локальных дисков не обязателен — можно указывать пути напрямую:

# Linux
rclone copy /mnt/ssd/docs /mnt/hdd/backup/docs

# Windows
rclone copy C:\Users\Name\Docs D:\Backup\Docs

Скрипт для SSD → HDD

Создайте скрипт для автоматической синхронизации между дисками:

#!/bin/bash

# Синхронизация SSD → HDD (локальная)
# Использование: ./sync-disks.sh [--watch]

# ========== НАСТРОЙКИ ==========
SOURCE_DIR="/mnt/ssd/notes"           # Исходная папка (SSD)
DEST_DIR="/mnt/hdd/backup/notes"      # Папка назначения (HDD)
LOG_FILE="/tmp/disk-sync.log"         # Файл лога
WORKDIR="/tmp/rclone-disk-work"       # Рабочая папка rclone
POLL_INTERVAL=60                      # Интервал проверки (сек)
# ===============================

# Логирование
log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}

# Проверка rclone
if ! command -v rclone &> /dev/null; then
    echo "Ошибка: rclone не найден. Установите: sudo apt install rclone"
    exit 1
fi

# Проверка доступности дисков
check_disks() {
    if [ ! -d "$SOURCE_DIR" ]; then
        log "ERROR: Исходный диск не доступен: $SOURCE_DIR"
        return 1
    fi
    if [ ! -d "$DEST_DIR" ]; then
        log "ERROR: Диск назначения не доступен: $DEST_DIR"
        return 1
    fi
    return 0
}

# Синхронизация
do_sync() {
    mkdir -p "$WORKDIR"

    rclone bisync "$SOURCE_DIR" "$DEST_DIR" \
        --workdir "$WORKDIR" \
        --exclude '.obsidian/**' \
        --exclude '*.log' \
        --exclude 'sync-disks.sh' \
        --force \
        --verbose 2>&1 | while IFS= read -r line; do
        log "$line"
    done
}

# Режим --watch (постоянная синхронизация)
if [ "$1" == "--watch" ]; then
    log "========================================"
    log "Запуск постоянной синхронизации дисков"
    log "Интервал: ${POLL_INTERVAL} сек"
    log "Ctrl+C для остановки"
    log "========================================"

    # Первая синхронизация
    if check_disks; then
        do_sync
    else
        log "ERROR: Диски недоступны"
        exit 1
    fi

    # Цикл
    while true; do
        sleep $POLL_INTERVAL

        # Проверка изменений локально
        local_new=$(find "$SOURCE_DIR" -type f -not -path '*/.obsidian/*' -not -name '*.log' -not -name 'sync-disks.sh' -mmin -1 2>/dev/null | wc -l)

        if [ "$local_new" -gt 0 ]; then
            log "Изменения: $local_new файлов"
            if check_disks; then
                do_sync
            else
                log "WARN: Диски недоступны"
            fi
        fi
    done
else
    # Одиночная синхронизация
    log "========================================"
    log "Запуск синхронизации дисков"
    log "SSD: $SOURCE_DIR"
    log "HDD: $DEST_DIR"
    log "========================================"

    if ! check_disks; then
        log "ERROR: Диски недоступны"
        exit 1
    fi

    log "Синхронизация..."
    do_sync

    log "Готово!"
    log "========================================"
    log "Для постоянной синхронизации:"
    log "  $0 --watch"
    log "========================================"
fi

Первый запуск (с --resync):

chmod +x ~/sync-disks.sh

# Первая синхронизация
rclone bisync /mnt/ssd/notes /mnt/hdd/backup/notes --resync --verbose

# Обычный запуск
./sync-disks.sh

# Постоянная синхронизация
./sync-disks.sh --watch

Для Windows: скрипт SSD → HDD

Создайте файл sync-disks.bat:

@echo off
chcp 65001 >nul

:: Синхронизация SSD → HDD (локальная)
:: Использование: sync-disks.bat [--watch]

:: ========== НАСТРОЙКИ ==========
set SOURCE_DIR=C:\Users\USER\notes
set DEST_DIR=D:\Backup\notes
set LOG_FILE=%TEMP%\disk-sync.log
set WORKDIR=%TEMP%\rclone-disk-work
set POLL_INTERVAL=60
:: ===============================

:: Логирование
setlocal enabledelayedexpansion
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
set "timestamp=[%YYYY%-%MM%-%DD% %HH%:%Min%:%Sec%]"

:: Проверка rclone
where rclone >nul 2>&1
if %ERRORLEVEL% NEQ 0 (
    echo Ошибка: rclone не найден. Установите с https://rclone.org/
    pause
    exit /b 1
)

:: Проверка дисков
if not exist "%SOURCE_DIR%" (
    echo Ошибка: Исходный диск не доступен: %SOURCE_DIR%
    pause
    exit /b 1
)
if not exist "%DEST_DIR%" (
    echo Ошибка: Диск назначения не доступен: %DEST_DIR%
    pause
    exit /b 1
)

:: Синхронизация
:do_sync
if not exist "%WORKDIR%" mkdir "%WORKDIR%"

rclone bisync "%SOURCE_DIR%" "%DEST_DIR%" ^
    --workdir "%WORKDIR%" ^
    --exclude ".obsidian/**" ^
    --exclude "*.log" ^
    --exclude "sync-disks.bat" ^
    --force ^
    --verbose >> "%LOG_FILE%" 2>&1

goto :eof

:: Одиночная синхронизация
if "%1"=="--watch" goto :watch_mode

echo ========================================
echo Запуск синхронизации дисков
echo SSD: %SOURCE_DIR%
echo HDD: %DEST_DIR%
echo ========================================

call :do_sync

echo Готово!
echo ========================================
echo Для постоянной синхронизации:
echo   %~nx0 --watch
echo ========================================
pause
goto :eof

:: Режим --watch
:watch_mode
echo ========================================
echo Запуск постоянной синхронизации дисков
echo Интервал: %POLL_INTERVAL% сек
echo Ctrl+C для остановки
echo ========================================

call :do_sync

:loop
timeout /t %POLL_INTERVAL% /nobreak >nul
call :do_sync
goto loop

Первый запуск:

Откройте Command Prompt от имени администратора:

:: Первая синхронизация
rclone bisync "C:\Users\USER\notes" "D:\Backup\notes" --resync --verbose

:: Обычный запуск
sync-disks.bat

:: Постоянная синхронизация
sync-disks.bat --watch

Типичные сценарии локальной синхронизации

Сценарий Команда SSD → HDD резервная копия rclone copy /mnt/ssd/data /mnt/hdd/backup Синхронизация между дисками rclone bisync /mnt/ssd/docs /mnt/hdd/docs Перемещение с удалением rclone move /mnt/ssd/archive /mnt/hdd/archive Windows: C: → D: rclone copy C:\Users\...\Docs D:\Backup\Docs Внешний USB диск rclone sync /home/user/docs /media/user/USB/backup Сетевой диск (NAS) rclone sync /mnt/nas/backup /mnt/local/backup


Автоматическая синхронизация через скрипт

Для Ubuntu/Linux

Создайте файл скрипта:

nano ~/sync-to-cloud.sh

Вставьте содержимое (замените пути на свои):

#!/bin/bash

# Синхронизация облачного диска через rclone bisync
# Использование: ./sync-to-cloud.sh [--watch]

# ========== НАСТРОЙКИ ==========
LOCAL_DIR="/home/USER/notes"           # Локальная папка
RCLONE_REMOTE="gdrive:notes"           # Remote и папка в облаке
LOG_FILE="/tmp/cloud-sync.log"         # Файл лога
WORKDIR="/tmp/rclone-bisync-work"      # Рабочая папка rclone
POLL_INTERVAL=10                       # Интервал проверки (сек)
# ===============================

# Логирование
log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}

# Проверка rclone
if ! command -v rclone &> /dev/null; then
    echo "Ошибка: rclone не найден. Установите: sudo apt install rclone"
    exit 1
fi

# Проверка подключения
check_connection() {
    if rclone lsd "$RCLONE_REMOTE" >/dev/null 2>&1; then
        return 0
    fi
    return 1
}

# Синхронизация
do_sync() {
    mkdir -p "$WORKDIR"

    rclone bisync "$LOCAL_DIR" "$RCLONE_REMOTE" \
        --workdir "$WORKDIR" \
        --exclude '.obsidian/**' \
        --exclude '*.log' \
        --exclude 'sync-to-cloud.sh' \
        --force \
        --verbose 2>&1 | while IFS= read -r line; do
        log "$line"
    done
}

# Режим --watch (постоянная синхронизация)
if [ "$1" == "--watch" ]; then
    log "========================================"
    log "Запуск постоянной синхронизации"
    log "Интервал: ${POLL_INTERVAL} сек"
    log "Ctrl+C для остановки"
    log "========================================"

    # Первая синхронизация
    if check_connection; then
        do_sync
    else
        log "ERROR: Облачный диск недоступен"
        exit 1
    fi

    # Цикл
    while true; do
        sleep $POLL_INTERVAL

        # Проверка изменений локально
        local_new=$(find "$LOCAL_DIR" -type f -not -path '*/.obsidian/*' -not -name '*.log' -not -name 'sync-to-cloud.sh' -mmin -1 2>/dev/null | wc -l)

        if [ "$local_new" -gt 0 ]; then
            log "Изменения: $local_new файлов"
            if check_connection; then
                do_sync
            else
                log "WARN: Диск недоступен"
            fi
        fi
    done
else
    # Одиночная синхронизация
    log "========================================"
    log "Запуск синхронизации"
    log "Локально: $LOCAL_DIR"
    log "Облако: $RCLONE_REMOTE"
    log "========================================"

    if ! check_connection; then
        log "ERROR: Облачный диск недоступен"
        exit 1
    fi

    log "Синхронизация..."
    do_sync

    log "Готово!"
    log "========================================"
    log "Для постоянной синхронизации:"
    log "  $0 --watch"
    log "========================================"
fi

Сохраните и сделайте исполняемым:

chmod +x ~/sync-to-cloud.sh

Первый запуск (с флагом --resync):

rclone bisync "/home/USER/notes" "gdrive:notes" --resync --verbose

Обычный запуск:

./sync-to-cloud.sh

Постоянная синхронизация:

./sync-to-cloud.sh --watch

Для Windows

Создайте файл sync-to-cloud.bat:

@echo off
chcp 65001 >nul

:: Синхронизация облачного диска через rclone bisync
:: Использование: sync-to-cloud.bat [--watch]

:: ========== НАСТРОЙКИ ==========
set LOCAL_DIR=C:\Users\USER\notes
set RCLONE_REMOTE=gdrive:notes
set LOG_FILE=%TEMP%\cloud-sync.log
set WORKDIR=%TEMP%\rclone-bisync-work
set POLL_INTERVAL=10
:: ===============================

:: Логирование
setlocal enabledelayedexpansion
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
set "timestamp=[%YYYY%-%MM%-%DD% %HH%:%Min%:%Sec%]"

:: Проверка rclone
where rclone >nul 2>&1
if %ERRORLEVEL% NEQ 0 (
    echo Ошибка: rclone не найден. Установите с https://rclone.org/
    pause
    exit /b 1
)

:: Синхронизация
:do_sync
if not exist "%WORKDIR%" mkdir "%WORKDIR%"

rclone bisync "%LOCAL_DIR%" "%RCLONE_REMOTE%" ^
    --workdir "%WORKDIR%" ^
    --exclude ".obsidian/**" ^
    --exclude "*.log" ^
    --exclude "sync-to-cloud.bat" ^
    --force ^
    --verbose >> "%LOG_FILE%" 2>&1

goto :eof

:: Одиночная синхронизация
if "%1"=="--watch" goto :watch_mode

echo ========================================
echo Запуск синхронизации
echo Локально: %LOCAL_DIR%
echo Облако: %RCLONE_REMOTE%
echo ========================================

call :do_sync

echo Готово!
echo ========================================
echo Для постоянной синхронизации:
echo   %~nx0 --watch
echo ========================================
pause
goto :eof

:: Режим --watch
:watch_mode
echo ========================================
echo Запуск постоянной синхронизации
echo Интервал: %POLL_INTERVAL% сек
echo Ctrl+C для остановки
echo ========================================

call :do_sync

:loop
timeout /t %POLL_INTERVAL% /nobreak >nul
call :do_sync
goto loop

Первый запуск (с флагом --resync):

Откройте Command Prompt от имени администратора:

rclone bisync "C:\Users\USER\notes" "gdrive:notes" --resync --verbose

Обычный запуск:

Дважды кликните на sync-to-cloud.bat или в командной строке:

sync-to-cloud.bat

Постоянная синхронизация:

sync-to-cloud.bat --watch

Постоянная синхронизация (режим мониторинга)

Linux

Запустите скрипт с флагом --watch:

./sync-to-cloud.sh --watch

Для работы в фоне используйте nohup или screen:

# В фоне с nohup
nohup ./sync-to-cloud.sh --watch &

# В сессии screen
screen -S sync
./sync-to-cloud.sh --watch
# Ctrl+A, D для отсоединения

Windows

Запустите .bat файл с флагом --watch:

sync-to-cloud.bat --watch

Для работы в фоне создайте .vbs файл:

Set objShell = CreateObject("WScript.Shell")
objShell.Run "cmd /c C:\path\to\sync-to-cloud.bat --watch", 0, False

Автозапуск при загрузке системы

Для автоматического запуска синхронизации при загрузке компьютера используйте системные службы.


Ubuntu: systemd сервис

systemd — современный способ управления службами в Linux. Создадим сервис для фоновой синхронизации.

Шаг 1: Создайте файл сервиса

sudo nano /etc/systemd/system/rclone-sync.service

Шаг 2: Добавьте содержимое

[Unit]
Description=rclone автоматическая синхронизация
After=network.target
Wants=network.target

[Service]
Type=simple
User=USER
Group=USER
ExecStart=/home/USER/sync-to-cloud.sh --watch
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=rclone-sync

[Install]
WantedBy=multi-user.target

Замените USER на ваше имя пользователя!

Шаг 3: Включите и запустите сервис

# Перезагрузить systemd (после создания файла)
sudo systemctl daemon-reload

# Включить автозапуск при загрузке
sudo systemctl enable rclone-sync.service

# Запустить сервис
sudo systemctl start rclone-sync.service

# Проверить статус
sudo systemctl status rclone-sync.service

Шаг 4: Просмотр логов

# Логи службы
journalctl -u rclone-sync.service -f

# Последние 50 строк
journalctl -u rclone-sync.service -n 50

Управление сервисом

# Остановить
sudo systemctl stop rclone-sync.service

# Перезапустить
sudo systemctl restart rclone-sync.service

# Отключить автозапуск
sudo systemctl disable rclone-sync.service

# Посмотреть логи
journalctl -u rclone-sync.service

Пример для синхронизации дисков

Файл /etc/systemd/system/rclone-disk-sync.service:

[Unit]
Description=rclone синхронизация SSD → HDD
After=local-fs.target
Wants=local-fs.target

[Service]
Type=simple
User=USER
ExecStart=/home/USER/sync-disks.sh --watch
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=rclone-disk-sync

[Install]
WantedBy=multi-user.target

Windows: планировщик задач

Способ 1: Через графический интерфейс

  1. Нажмите Win + R, введите taskschd.msc, нажмите Enter
  2. В правой панели: Создать задачу...
  3. Вкладка "Общие":
    • Имя: rclone Sync
    • Описание: Автоматическая синхронизация с облаком
    • Выполнять для всех пользователей
    • Выполнять вне зависимости от входа пользователя
    • Выполнять с наивысшими правами
  4. Вкладка "Триггеры":
    • Создать...
    • Начать задачу: При запуске
    • Дополнительные параметры:
      • Включить
      • Задержка задачи: 30 секунд (чтобы система успела загрузиться)
  5. Вкладка "Действия":
    • Создать...
    • Действие: Запуск программы
    • Программа или сценарий: C:\Windows\System32\cmd.exe
    • Добавить аргументы: /c "C:\path\to\sync-to-cloud.bat"
    • Начать в: C:\path\to\
  6. Вкладка "Условия":
    • Запускать только при питании от электросети (для ноутбуков)
    • Останавливать при переходе на питание от батареи
  7. Вкладка "Параметры":
    • Разрешить запуск задачи по требованию
    • Перезапускать каждые: 1 минута
    • Попыток перезапуска: 3
  8. Нажмите OK, введите пароль администратора

Способ 2: Через PowerShell (автоматически)

Создайте файл install-service.ps1:

# Путь к скрипту
$scriptPath = "C:\path\to\sync-to-cloud.bat"
$taskName = "rclone Sync"

# Действие задачи
$action = New-ScheduledTaskAction -Execute "cmd.exe" `
    -Argument "/c `"$scriptPath`"" `
    -WorkingDirectory "C:\path\to"

# Триггер: при запуске системы
$trigger = New-ScheduledTaskTrigger -AtStartup `
    -Delay (New-TimeSpan -Seconds 30)

# Настройки
$settings = New-ScheduledTaskSettingsSet `
    -AllowStartIfOnBatteries `
    -DontStopIfGoingOnBatteries `
    -StartWhenAvailable `
    -RestartCount 3 `
    -RestartInterval (New-TimeSpan -Minutes 1)

# Регистрация задачи
Register-ScheduledTask -TaskName $taskName `
    -Action $action `
    -Trigger $trigger `
    -Settings $settings `
    -Description "Автоматическая синхронизация rclone" `
    -User "SYSTEM"

Write-Host "Задача '$taskName' создана!"

Запустите от имени администратора:

# Правой кнопкой на PowerShell → Запустить от имени администратора
cd C:\path\to
.\install-service.ps1

Управление задачей

# Посмотреть задачи
Get-ScheduledTask | Where-Object {$_.TaskName -like "*rclone*"}

# Запустить вручную
Start-ScheduledTask -TaskName "rclone Sync"

# Остановить
Stop-ScheduledTask -TaskName "rclone Sync"

# Удалить задачу
Unregister-ScheduledTask -TaskName "rclone Sync" -Confirm

Linux: cron

cron — классический планировщик задач в Linux.

Шаг 1: Откройте crontab

crontab -e

Шаг 2: Добавьте задания

Синхронизация каждые 5 минут:

*/5 * * * * /home/USER/sync-to-cloud.sh >> /tmp/cron-sync.log 2>&1

Синхронизация раз в час:

0 * * * * /home/USER/sync-to-cloud.sh >> /tmp/cron-sync.log 2>&1

Синхронизация каждый день в 3:00:

0 3 * * * /home/USER/sync-to-cloud.sh >> /tmp/cron-sync.log 2>&1

Синхронизация только при подключённом питании (ноутбуки):

*/5 * * * * if on_ac_power; then /home/USER/sync-to-cloud.sh >> /tmp/cron-sync.log 2>&1; fi

Формат cron

* * * * * команда
│ │ │ │ │
│ │ │ │ └─ День недели (0-7, 0 и 7 = воскресенье)
│ │ │ └─── Месяц (1-12)
│ │ └───── День месяца (1-31)
│ └─────── Час (0-23)
└───────── Минута (0-59)

Примеры

Расписание Cron Каждую минуту * * * * * Каждые 5 минут */5 * * * * Каждый час 0 * * * * Каждый день в 9:00 0 9 * * * Каждое воскресенье в 2:00 0 2 * * 0 1-е число месяца в 0:00 0 0 1 * *

Управление cron

# Показать текущие задания
crontab -l

# Редактировать
crontab -e

# Удалить все задания
crontab -r

# Логи cron
grep CRON /var/log/syslog

Частые проблемы и их решение

1. rclone: command not found

Linux:

sudo apt install rclone

Windows:

  • Добавьте rclone в PATH (см. раздел установки)
  • Перезапустите терминал

2. Config file not found

Создайте конфиг вручную:

mkdir -p ~/.config/rclone
rclone config

Windows:

mkdir %APPDATA%\rclone
rclone config

3. Bisync critical error: must run --resync

Выполните команду с флагом --resync:

rclone bisync path1 path2 --resync --verbose

4. Token expired / Authentication failed

Обновите токен авторизации:

rclone config reconnect gdrive:

5. Синхронизация не видит изменения файлов

Проверьте, что:

  • Файлы не исключены фильтрами (--exclude)
  • Workdir не повреждён (удалите /tmp/rclone-bisync-work)
  • Время на ПК синхронизировано

6. Ошибка доступа к Google Drive

  1. Проверьте подключение к интернету
  2. Переподключите remote: rclone config reconnect gdrive:
  3. Убедитесь, что на Drive есть место

📚 Полезные ссылки


🎯 Краткая шпаргалка

Базовые команды

# Установка (Ubuntu)
sudo apt install rclone

# Установка (Windows Chocolatey)
choco install rclone

# Настройка
rclone config

# Проверка подключения
rclone lsd gdrive:

# Показать файлы
rclone ls gdrive:folder

Синхронизация

# Двусторонняя синхронизация
rclone bisync /local/path gdrive:remote/path

# Первый запуск (с сбросом)
rclone bisync /local/path gdrive:remote/path --resync --verbose

# Копирование (без удаления)
rclone copy /local/path gdrive:backup

# Синхронизация (односторонняя с удалением)
rclone sync /local/path gdrive:backup

# Проверка без изменений
rclone bisync /local/path gdrive:remote/path --dry-run

Локальная синхронизация (между дисками)

# SSD → HDD копирование
rclone copy /mnt/ssd/docs /mnt/hdd/backup

# Двусторонняя синхронизация дисков
rclone bisync /mnt/ssd/notes /mnt/hdd/notes

# Windows: C: → D:
rclone copy C:\Users\Name\Docs D:\Backup\Docs

Автозапуск

# systemd (Ubuntu) - создать сервис
sudo nano /etc/systemd/system/rclone-sync.service
sudo systemctl enable rclone-sync.service
sudo systemctl start rclone-sync.service

# cron - редактировать задания
crontab -e

# cron - каждые 5 минут
*/5 * * * * /home/user/sync.sh >> /tmp/sync.log 2>&1

# Просмотр логов systemd
journalctl -u rclone-sync.service -f

Windows команды

:: Проверка rclone
where rclone

:: Синхронизация
rclone bisync "C:\path\to" "gdrive:remote"

:: Первый запуск
rclone bisync "C:\path\to" "gdrive:remote" --resync --verbose

:: Планировщик (PowerShell)
Get-ScheduledTask | Where-Object {$_.TaskName -like "*rclone*"}

Совет: Всегда тестируйте команды с флагом --dry-run сначала — он покажет, что будет сделано, без реальных изменений.