Диск на арендованном сервере надо считать чужим. Хостер может заменить его, отправить на утилизацию или получить запрос. Поэтому всё, что попадает на VPS, шифруется до отправки, а ключ на сервере не хранится.
Для бэкапов этим занимается restic. Но есть данные, которым бэкап с историей не нужен: архив готовых проектов и старые образы дисков. Их удобнее держать как обычное зеркало папки.
Настройка
В rclone это делается двумя хранилищами, поставленными друг на друга. Первое описывает сервер, второе шифрует всё, что проходит через него. Готовый пример есть в rclone.conf.example.
[vps]
type = sftp
host = backup.example.org
user = box
key_file = /home/box/.ssh/id_ed25519
[vps-crypt]
type = crypt
remote = vps:archive
filename_encryption = standard
directory_name_encryption = true
password = ...
password2 = ...
Строки password и password2 записываются в запутанном виде, который выдаёт rclone obscure. Это не защита: файл настроек надо беречь так же, как и пароль. Второй пароль служит солью, его тоже придётся сохранить.
Отправка
Сначала всегда запускаю с --dry-run: sync приводит получателя к виду источника, а значит удаляет лишнее.
rclone sync /srv/data/archive vps-crypt: --dry-run
rclone sync /srv/data/archive vps-crypt: --transfers 4 --progress
Днём канал нужен для работы, поэтому ограничиваю скорость по расписанию:
rclone sync /srv/data/archive vps-crypt: --bwlimit "08:00,5M 23:00,off"
Как выглядит результат
На сервере нет ни имён, ни структуры, только зашифрованные названия:
$ rclone ls vps:archive | head -3
18446 3fqe0vh0ls2c8f5kjq1v9g2e4o/h1a4s9r2ctb7pn0d5n3l8ue6mg
524303 3fqe0vh0ls2c8f5kjq1v9g2e4o/q8m2ve5ofg1t6u3ib7ck0jr9sc
73218 ku5p7d3n1tg8a2f6s0mjlb4rvo/7ha9ec2i0qk3mn6lpg4dt5sr1g
Размер файлов виден, он лишь немного больше исходного. Если это важно, можно упаковывать мелкие файлы в архивы до отправки.
Проверка
Обычный rclone check здесь не сработает, потому что зашифрованные файлы не совпадают с оригиналами побайтно. Для этого есть отдельная команда, она считает контрольные суммы с учётом шифрования:
rclone cryptcheck /srv/data/archive vps-crypt:
И один раз проверьте главное: что файл можно получить обратно на другом компьютере, имея только сохранённый файл настроек.
rclone copy vps-crypt:2019/проект/отчёт.pdf /tmp/проверка/
Паролей от crypt никто не восстановит. Я храню файл настроек в менеджере паролей и на бумаге вместе с паролем от restic.