В попередньому пості серії по налаштуванню Home NAS на FreeBSD знайомились з Restic – утилітою для роботи з бекапами, і яка підтримує шифрування, снапшоти, історію змін, див. FreeBSD: Home NAS, part 8 – backup даних NFS та Samba з restic.
Але окрім архівних даних в S3 хочеться мати “offsite hot copy” в Google Drive та AWS S3, аби мати доступ до даних постійно, і які не треба відновлювати із бекапу, а можна просто скопіювати з CLI або навіть з браузера.
При цьому не хочеться розводити зоопарк різних систем, а працювати з одною, яка буде вміти підключатись і до AWS, і до Google Drive.
Власне, під час пошуку того, як з restic копіювати дані в Google Drive знайшов такий собі “швейцарський ніж” – Rclone.
Зміст
rclone overview
Rclone (“rsync for cloud storage“) – CLI-утиліта, вміє працювати просто з безліччю різних бекендів – і локальними даними або NFS, Samba, і FTP, і WebDAV, і, звісно, AWS S3 та Google Drive, див. всі в Overview of cloud storage systems.
Основні плюшки системи:
- написаний на Go
- можливість одною CLI отримати доступ до даних в Google Drive та S3
- client-side шифрування даних і імен файлів
- режими
copyтаsync, аналогічніrsync - є можливість змонтувати ремоут в локальну директорію, і працювати як зі звичайною папкою з даними (див. rclone mount)
- вміє працювати як “проксі” між двома remotes (наприклад, копіювати дані між Google Drive та S3)
- має Web GUI
Але при цьому rclone не є саме бекап-системою – не використовує снапшоти, не веде історію змін даних, не відновлює стан “на дату”.
rclone та Google Drive backend
Почнемо з Google Drive, бо це основне, для чого я планую використовувати rclone, але далі налаштуємо і AWS S3.
Документація – Google Drive.
Створення Google API keys для rclone
Для роботи з Google Drive створимо API keys, і цей процес опишу окремо, бо створення ключів в Google трохи заплутане, і я кожного разу шукаю гайд як це робити.
Переходимо в Google API Console, вибираємо існуючий або створюємо новий проект:
Зліва вибираємо “Enabled APIs & services”, клікаємо “Enable APIs”:
В пошуку знаходимо “Google Drive API”:
Вмикаємо його:
Переходимо в “OAuth consent screen”:
Переходимо в “Branding”, заповнюємо “App information” – задаємо ім’я, це чисто для нас, вказуємо email:
І внизу в “Developer contact information” ще раз пошту:
Зберігаємо, переходимо в “Audience”, перевіряємо, що тут “User type” заданий як External:
Переходимо в “Clients”, потім “Create client”:
Вказуємо “Application type” як Desktop app:
Отримуємо Client ID та Client Secret, зберігаємо собі:
Переходимо до налаштувань підключень вже в самому rclone.
Налаштування Google Drive remote
Виконуємо rclone config, вибираємо “n) New remote“, задаємо ім’я:
... e/n/d/r/c/s/q> n Enter name for new remote. name> nas-google-drive ...
Далі вибираємо з яким бекендом rclone буде працювати.
Для Google Drive це 22 (можна вказати номер, можна ім’я “drive“):
... 22 / Google Drive \ (drive) ...
Наступний крок аутентифікація – задаємо ключі:
... Option client_id. Google Application Client Id ... Enter a value. Press Enter to leave empty. client_id> 377***7i7.apps.googleusercontent.com Option client_secret. OAuth Client Secret. Leave blank normally. Enter a value. Press Enter to leave empty. client_secret> GOC***gjX ...
Задаємо рівень доступу – тут можна дати або повний доступ до всього драйву, або, якщо rclone буде тільки для бекапів, то вибрати “Access to files created by rclone only”.
На ноутбуках можна задати повний доступ, а на FreeBSD зробимо “тільки для свої файлів”:
В Advanced можна редагувати параметри типу “use_trash” та “Upload chunk size”, але це можна зробити пізніше – зараз просто тиснемо Enter.
Наступний крок – аутентифікація для отримання токену від Google:
... Use web browser to automatically authenticate rclone with remote? * Say Y if the machine running rclone has a web browser you can use * Say N if running rclone on a (remote) machine without web browser access If not sure try Y. If Y failed, try N. y) Yes (default) n) No
Так як це робиться на FreeBSD без браузеру, то вибираємо No – rclone згенерує токен, який треба вказати на машині з браузером, де є інший інстанс rclone:
...
y/n> n
Option config_token.
For this to work, you will need rclone available on a machine that has
a web browser available.
For more help and alternate methods see: https://rclone.org/remote_setup/
Execute the following on the machine with the web browser (same rclone
version recommended):
rclone authorize "drive" "eyJ***ifQ"
Then paste the result.
Enter a value.
Виконуємо на ноуті:
$ rclone authorize "drive" "eyJ***ifQ" 2026/01/07 16:35:38 NOTICE: Make sure your Redirect URL is set to "http://127.0.0.1:53682/" in your custom config. 2026/01/07 16:35:38 NOTICE: If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=Lf9q_HUVFlBUc2UqlSUqpw 2026/01/07 16:35:38 NOTICE: Log in and authorize rclone for access 2026/01/07 16:35:38 NOTICE: Waiting for code...
Відкривається браузер, вибираємо акаунт:
Дозволяємо доступ:
Отримуємо Success:
А на ноут в консолі, з якої викликали rclone authorize прийде токен:
... 2026/01/07 16:35:38 NOTICE: Waiting for code... 2026/01/07 16:37:33 NOTICE: Got code Paste the following into your remote machine ---> eyJ...ifQ <---End paste
Копіюємо його до rclone config на FreeBSD хості:
... Enter a value. config_token> eyJ***ifQ ...
І нове підключення готове:
...
Configuration complete.
Options:
- type: drive
- client_id: 377***7i7.apps.googleusercontent.com
- client_secret: GOC***gjX
- scope: drive.file
- token: {"access_token":"ya2***","expires_in":3599}
- team_drive:
Keep this "nas-google-drive" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
Глянути всі налаштовані бекенди можна з rclone listremotes:
root@setevoy-nas:/home/setevoy # rclone listremotes nas-google-drive:
Або повна інформація з rclone config show:
root@setevoy-nas:/home/setevoy # rclone config show
[nas-google-drive]
type = drive
client_id = ***7i7.apps.googleusercontent.com
client_secret = GOCSPX-***gjX
scope = drive.file
token = {"access_token":"???"expires_in":3599}
team_drive =
scope = drive.file тут як раз вказує доступ тільки до даних від самого rclone.
Перевіряємо доступ до диску – свторюємо каталог:
root@setevoy-nas:~ # rclone mkdir nas-google-drive:Backups/Rclone
Перевіряємо зміст з rclone lsd та -R (recursive):
root@setevoy-nas:~ # rclone lsd -R nas-google-drive:Backups
0 2026-01-20 16:04:10 -1 Rclone
Тепер налаштуємо ще AWS S3, а далі подивимось на основні команди для роботи з rclone.
rclone та AWS S3 backend
Документація – Amazon S3 Storage Providers.
Якби rclone був десь в AWS на EC2 або в EKS – то можна було б використати IAM Role, зараз просто зробимо з ключами.
Створення AWS IAM Policy та IAM User
Краще, звісно, зробити окремого юзера з власною політикою, у якого буде доступ до конкретної корзини, а не всього аккаунту.
Створюємо бакет:
Створюємо IAM Policy з повним доступом тільки до цього бакету:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "RcloneNasBackupsFullAccess",
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::setevoy-backups-nas",
"arn:aws:s3:::setevoy-backups-nas/*"
]
}
]
}
Зберігаємо:
Створюємо юзера – без доступу до AWS Management Console:
Підключаємо створену вище політику:
Зберігаємо юзера:
Створюємо для нього ключі доступу:
Вибираємо Application running outside AWS:
Зберігаємо ключі:
Налаштування AWS S3 remote
Запускаємо rclone config, вибираємо “New remote”, задаємо ім’я:
root@setevoy-nas:~ # rclone config Current remotes: Name Type ==== ==== nas-google-drive drive e) Edit existing remote n) New remote d) Delete remote r) Rename remote c) Copy remote s) Set configuration password q) Quit config e/n/d/r/c/s/q> n Enter name for new remote. name> nas-s3-setevoy-backups ...
Далі тип – вибираємо 4 (s3), потім 1 – AWS:
... Option Storage. Type of storage to configure. Choose a number from below, or type in your own value. 1 / 1Fichier \ (fichier) 2 / Akamai NetStorage \ (netstorage) 3 / Alias for an existing remote \ (alias) 4 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, ArvanCloud, Ceph, ChinaMobile, Cloudflare, DigitalOcean, Dreamhost, Exaba, FlashBlade, GCS, HuaweiOBS, IBMCOS, IDrive, IONOS, LyveCloud, Leviia, Liara, Linode, Magalu, Mega, Minio, Netease, Outscale, OVHcloud, Petabox, RackCorp, Rclone, Scaleway, SeaweedFS, Selectel, StackPath, Storj, Synology, TencentCOS, Wasabi, Qiniu, Zata and others \ (s3) ... Storage> s3 Option provider. Choose your S3 provider. Choose a number from below, or type in your own value. Press Enter to leave empty. 1 / Amazon Web Services (AWS) S3 \ (AWS) ...
Далі вибираємо “Enter AWS credentials in the next step” і задаємо ключі:
... Option env_auth. Get AWS credentials from runtime (environment variables or EC2/ECS meta data if no env vars). Only applies if access_key_id and secret_access_key is blank. Choose a number from below, or type in your own boolean value (true or false). Press Enter for the default (false). 1 / Enter AWS credentials in the next step. \ (false) 2 / Get AWS credentials from the environment (env vars or IAM). \ (true) env_auth> 1 Option access_key_id. AWS Access Key ID. Leave blank for anonymous access or runtime credentials. Enter a value. Press Enter to leave empty. access_key_id> AKI***VXZ Option secret_access_key. AWS Secret Access Key (password). Leave blank for anonymous access or runtime credentials. Enter a value. Press Enter to leave empty. secret_access_key> MkP***xJ/ ...
Далі регіон бакету – він є в Properties:
Задаємо його:
... Option region. Region to connect to. Choose a number from below, or type in your own value. Press Enter to leave empty. / The default endpoint - a good choice if you are unsure. 1 | US Region, Northern Virginia, or Pacific Northwest. | Leave location constraint empty. \ (us-east-1) ... region> eu-west-1 ...
Option endpoint залишаємо без мін, в Option location_constraint ще раз задаємо “eu-west-1“:
Option location_constraint. Location constraint - must be set to match the Region. Used when creating buckets only. Choose a number from below, or type in your own value. Press Enter to leave empty. 1 / Empty for US Region, Northern Virginia, or Pacific Northwest \ () ... 6 / EU (Ireland) Region \ (eu-west-1) ... location_constraint> eu-west-1
Option acl можна пропустити – у нас окрема корзина, в якій вже є всі налаштування ACL.
В server_side_encryption вибираємо “AES256“, далі “None“:
... Option server_side_encryption. The server-side encryption algorithm used when storing this object in S3. Choose a number from below, or type in your own value. Press Enter to leave empty. 1 / None \ () 2 / AES256 \ (AES256) 3 / aws:kms \ (aws:kms) server_side_encryption> 2 Option sse_kms_key_id. If using KMS ID you must provide the ARN of Key. Choose a number from below, or type in your own value. Press Enter to leave empty. 1 / None \ () 2 / arn:aws:kms:* \ (arn:aws:kms:us-east-1:*) sse_kms_key_id> 1
Далі тип Storage Classes, див The Ultimate Guide to AWS S3 Pricing in 2026.
Можна взяти INTELLIGENT_TIERING:
... Option storage_class. The storage class to use when storing new objects in S3. Choose a number from below, or type in your own value. Press Enter to leave empty. 1 / Default \ () ... 8 / Intelligent-Tiering storage class \ (INTELLIGENT_TIERING) ... storage_class> 8
Зберігаємо – маємо новий бекенд:
... Edit advanced config? y) Yes n) No (default) y/n> Configuration complete. Options: - type: s3 - provider: AWS - access_key_id: AKI***VXZ - secret_access_key: MkP***zxJ/ - region: eu-west-1 - location_constraint: eu-west-1 - server_side_encryption: AES256 - storage_class: INTELLIGENT_TIERING Keep this "nas-s3-setevoy-backups" remote? y) Yes this is OK (default) e) Edit this remote d) Delete this remote y/e/d> Current remotes: Name Type ==== ==== nas-google-drive drive nas-s3-setevoy-backups s3 ...
Для роботи з S3 бакетом використовуємо формат remote_name:backet_name.
Створюємо в бакеті файл healthcheck.txt і каталог test – використовуємо rclone rcat:
root@setevoy-nas:~ # echo test | rclone rcat nas-s3-setevoy-backups:setevoy-backups-nas/test/healthcheck.txt
Перевіряємо зміст корзини з rclone ls:
root@setevoy-nas:~ # rclone ls nas-s3-setevoy-backups:setevoy-backups-nas/test
5 healthcheck.txt
Rclone та шифрування
Задля більшої безпеки rclone може шифрувати свій локальний конфігураційний файл, а для безпечного зберігання даних в remote backends – може шифрувати дані там.
Rclone remote Crypt backend
Документація – Crypt.
crypt створюється як окремий бекенд, але використовує вже існуючий.
Наприклад, маючи nas-google-drive можна створити новий storage backend nas-google-drive-crypted і використовувати його: він буде таким собі “проксі” – ми пишемо дані “в нього”, він виконує шифрування, а потім “під капотом”, аби записати файли в Google Drive, використовує “оригінальний” бекенд nas-google-drive.
Створюємо новий remote:
root@setevoy-nas:~ # rclone config Current remotes: Name Type ==== ==== nas-google-drive drive nas-s3-setevoy-backups s3 e) Edit existing remote n) New remote d) Delete remote r) Rename remote c) Copy remote s) Set configuration password q) Quit config e/n/d/r/c/s/q> n Enter name for new remote. name> nas-google-drive-crypted
В типі вибираємо “15 – Encrypt/Decrypt a remote”:
... Option Storage. Type of storage to configure. Choose a number from below, or type in your own value. ... 15 / Encrypt/Decrypt a remote \ (crypt) ... Storage> crypt
Далі вказуємо “source backend”, в якому будуть зашифровані дані.
Тут важливий момент: можна вказати або весь storage як nas-google-drive:Backups/Rclone (корінь для rclone в моєму випадку) – або створити в ньому окремий каталог, в якому будуть зберігатись зашифровані дані:
... Option remote. Remote to encrypt/decrypt. Normally should contain a ':' and a path, e.g. "myremote:path/to/dir", "myremote:bucket" or maybe "myremote:" (not recommended). Enter a value. remote> nas-google-drive:Backups/Rclone/Vault
Далі є варіанти – шифрувати імена файлів і каталогів чи ні, дефолт – шифрувати:
... Option filename_encryption. How to encrypt the filenames. Choose a number from below, or type in your own value of type string. Press Enter for the default (standard). / Encrypt the filenames. 1 | See the docs for the details. \ (standard) 2 / Very simple filename obfuscation. \ (obfuscate) / Don't encrypt the file names. 3 | Adds a ".bin", or "suffix" extension only. \ (off) filename_encryption> Option directory_name_encryption. Option to either encrypt directory names or leave them intact. NB If filename_encryption is "off" then this option will do nothing. Choose a number from below, or type in your own boolean value (true or false). Press Enter for the default (true). 1 / Encrypt directory names. \ (true) 2 / Don't encrypt directory names, leave them intact. \ (false) directory_name_encryption>
І останнє – вказати пароль і опціонально salt:
... Option password. Password or pass phrase for encryption. Choose an alternative below. y) Yes, type in my own password g) Generate random password y/g> y Enter the password: password: Confirm the password: password: Option password2. Password or pass phrase for salt. Optional but recommended. Should be different to the previous password. Choose an alternative below. Press Enter for the default (n). y) Yes, type in my own password g) Generate random password n) No, leave this optional password blank (default) y/g/n>
Готово:
... Configuration complete. Options: - type: crypt - remote: nas-google-drive:Backups/Rclone/Vault - password: *** ENCRYPTED *** Keep this "nas-google-drive-crypted" remote? y) Yes this is OK (default) e) Edit this remote d) Delete this remote y/e/d> Current remotes: Name Type ==== ==== nas-google-drive drive nas-google-drive-crypted crypt nas-s3-setevoy-backups s3
Тепер, якщо скопіюємо туди текстовий файл, то прочитати його зможемо тільки з rclone:
root@setevoy-nas:~ # rclone copy /root/rclone-copy.txt nas-google-drive-crypted:
Якщо глянути його в Google Drive, то побачимо щось таке:
Якщо просто напряму просто завантажити собі на ноутбук із Google Drive Web UI, то дані теж недоступні:
[setevoy@setevoy-work ~] $ file Temp/56ncq9f6nnvup446abn28tno20 Temp/56ncq9f6nnvup446abn28tno20: data [setevoy@setevoy-work ~] $ cat Temp/56ncq9f6nnvup446abn28tno20 ����~���ܻv� ���ڰ�~qz ����zG�4nNEQ
Але все нормально читається з rclone:
root@setevoy-nas:~ # rclone cat nas-google-drive-crypted:rclone-copy.txt test
І можна відновити собі локально з rclone copy або rclone copyto:
root@setevoy-nas:~ # rclone copyto nas-google-drive-crypted:rclone-copy.txt /home/setevoy/decrypted-rclone-copy.txt root@setevoy-nas:~ # cat /home/setevoy/decrypted-rclone-copy.txt test
rclone та config file ecnryption
rclone зберігає всі свої налаштування в файлі ~/.config/rclone/rclone.conf, і по дефолту файл не шифрується:
root@setevoy-nas:~ # cat ~/.config/rclone/rclone.conf
[nas-google-drive]
type = drive
client_id = ***.apps.googleusercontent.com
client_secret = GOCSPX-***
scope = drive.file
token = {"access_token":***","expiry":"2026-01-17T18:09:01.116266823+02:00","expires_in":3599}
team_drive =
Але можна задати пароль:
root@setevoy-nas:~ # rclone config encryption set Enter NEW configuration password: password: Confirm NEW configuration password: password:
Тепер файл зашифровано:
root@setevoy-nas:~ # cat ~/.config/rclone/rclone.conf # Encrypted rclone configuration File RCLONE_ENCRYPT_V0: g3M***LSA=
А при роботі з rclone він буде просити ввести пароль для читання конфігу:
root@setevoy-nas:~ # rclone config show Enter configuration password:
Для автоматизації в скриптах або cron пароль можна передати через змінну RCLONE_CONFIG_PASS.
Див. rclone config encryption та rclone config show.
Основні можливості і команди
Головні команди, принаймні при використанні rclone для бекапів, це rclone copy та rclone sync.
З найбільш цікавих команд варто глянути такі:
- rclone bisync: повністю двосторонньо синхронізує src та dst (копіює і видаляє)
- rclone cat та rclone rcat: читання з remote у stdout або запис у remote зі stdout
- rclone delete та rclone deletefile: видалення даних з можливістю використання фільтрів (
--exclude/--exclude) - rclone ls та rclone lsd:
ls– список файлів з розмірами,lsd– список директорій - rclone mkdir: створення директорії на remote
- rclone mount: монтує remote як файлову систему (FUSE)
- rclone move: переносить файли (copy + delete з src)
- rclone ncdu: інтерактивний перегляд використання місця на remote
- rclone rmdir: видалення порожньої директорії
- rclone rmdirs: рекурсивне видалення порожніх директорій
- rclone purge: повне видалення каталогу з усім вмістом
- rclone size: показує кількість файлів і загальний розмір
- rclone test speed: тест швидкості upload/download до remote
- rclone tree: показує дерево каталогів
Корисні Flags
Див. всі в Global Flags.
Найбільш цікаві:
--check-first: виконати перевірку даних між src та dst до початку копіювання--checksum: порівнювати файл між src та dst не за size+mtime, а по MD5SUM checksum – повільніше, але точніше, корисно для критичних даних--immutable: не змінювати файл в dst, якщо він відрізняється від src, а впасти з помилкою--interactive: підтвердження змін вручну--dry-run: тестове виконання без копіювання--progress: відобразити процес--transfers N: кількість файлів, які копіюються одночасно (дефолт 4)--create-empty-src-dirs: якщо src каталог порожній – то створити порожній каталог в dst (не працює з S3)--excludeта--exclude-from,--includeта--include-from: список або файл зі списком даних, які треба включити або виключити з копіювання, див. Filter--log-file: куди писати лог (корисно для автоматизації)--fast-list: створює один великий список директорій і файлів, який тримає в пам’яті, а не для кожної директорії окремо (більше пам’яті – але швидше і менше API-запитів до dst)--update: пропустити файли, modification time яких на dst новіший, ніж в src--human-readable: використовувати формат Ki/Mi/Gi
Використання rclone copy та rclone copyto
rclone copy просто копіює файл або директорію до заданого remote.
Якщо src – каталог з підкаталогами, то будуть скопійовані всі дані і збережено структуру каталогів.
Наприклад, маємо локально каталоги з файлами:
root@setevoy-nas:~ # tree /tmp/new/
/tmp/new/
└── another
└── dir
├── a.txt
└── sub
└── b.txt
Запускаємо rclone copy:
root@setevoy-nas:~ # rclone copy /tmp/new/ nas-google-drive:Backups/Rclone
Перевіряємо на remote:
root@setevoy-nas:~ # rclone tree nas-google-drive:Backups/Rclone/
/
└── another
└── dir
├── a.txt
└── sub
└── b.txt
Аналогічно, можемо просто скопіювати окремий файл в новий каталог:
root@setevoy-nas:~ # rclone copy /root/rclone-copy.txt nas-google-drive:Backups/Rclone/rclone-dir
І тепер:
root@setevoy-nas:~ # rclone ls nas-google-drive:Backups/Rclone
5 rclone-dir/rclone-copy.txt
2 another/dir/a.txt
2 another/dir/sub/b.txt
Але з rclone copy не можна вказати нове ім’я файлу, тобто:
root@setevoy-nas:~ # rclone copy /root/rclone-copy.txt nas-google-drive:Backups/Rclone/rclone-dir/new-rclone-copy.txt
Створить нову директорію, а не файл з ім’ям new-rclone-copy.txt:
root@setevoy-nas:~ # rclone ls nas-google-drive:Backups/Rclone
5 rclone-dir/rclone-copy.txt
5 rclone-dir/new-rclone-copy.txt/rclone-copy.txt
Для копіювання з новим іменем використовуємо rclone copyto:
root@setevoy-nas:~ # rclone copyto /root/rclone-copy.txt nas-google-drive:Backups/Rclone/rclone-dir-copyto/new-rclone-copyto.txt
В результаті:
root@setevoy-nas:~ # rclone ls nas-google-drive:Backups/Rclone
5 rclone-dir-copyto/new-rclone-copyto.txt
...
Використання rclone sync
rclone sync виконує повну синхронізацію між src та dst: якщо в src файл було видалено – він видалиться і на dst. Див. також rclone bisync.
Корисні флаги тут:
--backup-dir: на dst не видаляти файл, який змінився в src, а зберегти в окрему директорію--delete-afterта--delete-before: видаляти дані до або після успішного копіювання--suffix: додати суфікс до даних, які змінились
З rclone purge видаляємо створені під час тестів вище дані (видалить і саму директорію):
root@setevoy-nas:~ # rclone purge nas-google-drive:Backups/Rclone/ root@setevoy-nas:~ # rclone mkdir nas-google-drive:Backups/Rclone/
Виконуємо rclone sync:
root@setevoy-nas:~ # rclone sync /tmp/new/ nas-google-drive:Backups/Rclone/
Отримуємо аналогічну структуру на remote:
root@setevoy-nas:~ # rclone tree nas-google-drive:Backups/Rclone/
/
└── another
└── dir
├── a.txt
└── sub
└── b.txt
І приклад того, як працює --backup-dir.
Змінимо зміст файлу в src:
root@setevoy-nas:~ # echo updated > /tmp/new/another/dir/a.txt
Виконуємо rclone sync і вказуємо --backup-dir:
root@setevoy-nas:~ # rclone sync /tmp/new/ nas-google-drive:Backups/Rclone --backup-dir nas-google-drive:Backups/Rclone-changed/$(date +%Y-%m-%d-%H-%M-%S)
Але --backup-dir має бути поза dst – тобто не можна робити rclone sync /path/src/ nas-google-drive:path/dst/ --backup-dir path/dst/backupDir.
Тепер у нас в корні Backups/ є новий каталог Rclone-changed/:
root@setevoy-nas:~ # rclone tree nas-google-drive:Backups/
/
├── Rclone
│ └── another
│ └── dir
│ ├── a.txt
│ └── sub
│ └── b.txt
└── Rclone-changed
└── 2026-01-21-12-08-33
└── another
└── dir
└── a.txt
В якому збережено оригінальну копію файлу a.txt:
root@setevoy-nas:~ # rclone cat nas-google-drive:Backups/Rclone-changed/2026-01-21-12-08-33/another/dir/a.txt a
А в Backups/Rclone/another/dir/a.txt у нас оновлений файл:
root@setevoy-nas:~ # rclone cat nas-google-drive:Backups/Rclone/another/dir/a.txt updated
Ну і на цьому, мабуть, все.
Тепер можна створити кілька cron і налаштувати бекап бекапів.
![]()























