Object Storage с S3-совместимым API стал «дефолтным» бэкендом для бэкапов, статики, архивов и обмена большими файлами. Но на практике стабильность и скорость упираются не только в провайдера, а в то, как ваш клиент делает листинг, параллелит операции, переживает 429/503 и проверяет целостность.
Ниже — сравнение rclone vs s3cmd vs aws-cli именно глазами админа/DevOps: performance, multipart, retries, checksum, совместимость с S3-реализациями и удобство в автоматизации.
Коротко: кто есть кто
aws-cli — официальный CLI от AWS. Хорош для «каноничного» поведения S3, профилей/ролей и типовых сценариев в AWS. С S3-совместимыми стораджами тоже работает, но чаще требует явных параметров (endpoint, стиль адресации, нюансы TLS).
s3cmd — классический консольный клиент под S3. Ценят за простоту и предсказуемость в скриптах. По возможностям и тонким настройкам местами уступает rclone и современному aws-cli.
rclone — «швейцарский нож» для облачных хранилищ (S3, Swift, Drive и десятки других). Сильные стороны: синхронизация, фильтры, параллелизм, миграции «storage → storage», диагностика и устойчивость длинных задач.
Критерии сравнения: что важно именно для Object Storage
Чтобы не скатиться в «что привычнее», держим фокус на практичных критериях:
- performance: параллельные загрузки/скачивания, эффективность на большом количестве мелких объектов, скорость листинга.
- multipart: пороги, размеры частей, поведение при обрывах, вероятность «мусора» от незавершённых загрузок.
- retries: политика повторов, backoff, устойчивость к 429/503/timeout, способность продолжать работу без ручного вмешательства.
- checksum: что реально проверяется (и что нет), как избежать ложной уверенности.
- scripting/CI: коды возврата, стабильность вывода, логирование, машинный формат.
- совместимость: endpoint/region, path-style vs virtual-hosted-style, подписи, прокси, TLS.
Если вы регулярно гоняете бэкапы или статику, удобнее всего запускать такие задачи на отдельном сервере/контейнере с предсказуемым окружением и сетевыми лимитами — например, на VDS, где можно без сюрпризов настроить CPU/RAM и cron/таймеры.

Аутентификация, endpoint и «совместимость» S3
В проде вы часто упираетесь не в команду cp, а в «обвязку»: какой endpoint, какой регион ожидается, поддерживает ли провайдер нужные заголовки, какой стиль адресации бакета включён.
aws-cli опирается на AWS-практики (профили, переменные окружения, цепочки учётных данных). Для не-AWS S3 обычно нужно явно указывать endpoint, а иногда — стиль адресации и прочие нюансы. Плюс aws-cli нередко «строже» к соответствию ожидаемому поведению API.
s3cmd исторически неплохо дружит с S3-совместимыми стораджами: конфиг в одном файле, понятная настройка endpoint/region. Поэтому его часто выбирают для сценария «просто заливать бэкапы».
rclone удобен тем, что в одном конфиге можно держать несколько remote (разные стораджи/аккаунты) и синхронизировать между ними напрямую. Это экономит время при миграциях и сценариях «копия в два разных хранилища».
Перед автоматизацией сделайте короткий тест: заливка/скачивание, листинг, удаление и multipart на файле 1–5 ГБ. За 10 минут вы поймаете большую часть проблем endpoint/DNS/TLS и несовместимостей.
Performance: параллелизм, мелкие файлы и листинг
Скорость в S3 — это не только «ширина канала». Часто ограничитель — число запросов, латентность, лимиты API и то, как клиент строит очередь операций (list/HEAD/GET/PUT).
rclone: сильная сторона — параллельная синхронизация
rclone обычно самый «про производительность» из тройки: умеет агрессивно параллелить операции и гибко управлять потоками. В задачах зеркалирования директорий (много файлов) он часто выигрывает за счёт конвейера: листинг, сравнение, загрузка — всё в работе одновременно.
Плюс rclone даёт удобные фильтры и режимы синка (маски, исключения, ограничение скорости). Это влияет на эксплуатацию: можно «притормозить» бэкап, чтобы не мешал продакшену.
Если хотите углубиться именно в настройку multipart и параметров под S3 в rclone, полезно держать под рукой отдельный разбор: как тюнить multipart и потоки в rclone для S3.
aws-cli: предсказуемый вариант, особенно в AWS
aws-cli обычно даёт стабильную скорость и поведение, особенно в AWS. Он хорош, когда нужен «официальный» путь и минимум сюрпризов в трактовке API.
Но на массовых синках мелких файлов «из коробки» aws-cli нередко уступает rclone: многое зависит от версии, окружения и параметров, но rclone чаще быстрее на больших деревьях.
s3cmd: простые потоки — да, масштаб — не всегда
s3cmd удобен для прямых сценариев, но на больших объёмах (десятки/сотни тысяч объектов и выше) может упираться в менее агрессивную параллельность и менее гибкую «конвейерность». Для регулярных бэкапов по cron это часто нормально, а вот для миграций и «переезда статики» — заметно.
Multipart: большие файлы, докачка и уборка незавершённых частей
multipart — ключевая функция для больших архивов, дампов и медиа. От клиента нужны две вещи: адекватные размеры частей и устойчивость к обрывам.
aws-cli использует multipart для крупных объектов и обычно делает это «как ожидает AWS». Это плюс для совместимости. Но помните: при обрывах могут оставаться незавершённые multipart-загрузки, которые занимают место (в зависимости от реализации). Решение — lifecycle-правила на бакете или периодическая уборка.
rclone даёт больше рычагов для настройки multipart-порогов и размеров частей (зависит от backend). Практический смысл: можно подстроиться под сеть. Например, уменьшить части при нестабильном канале, чтобы реже «терять прогресс», или увеличить — чтобы уменьшить накладные расходы на запросы.
s3cmd тоже поддерживает multipart, но тонких настроек и диагностических опций обычно меньше, чем у rclone. Зато в простых сценариях проще «держать в голове» что происходит.
Retries: как клиенты переживают 429/503/таймауты
На реальных объёмах неизбежны временные ошибки: rate limit API, кратковременные сетевые проблемы, плавающая латентность. Качество retries определяет, будете ли вы просыпаться по алертам.
aws-cli имеет зрелую модель повторов и backoff, но многое зависит от конкретной команды и параметров окружения. В AWS это чаще всего самый «предсказуемый» вариант.
rclone обычно очень устойчив на длинных операциях: активно ретраит и умеет продолжать работу, не превращая единичный сбой в падение всей задачи. Для бэкапов по расписанию это часто критично.
s3cmd может быть достаточно надёжным, но в стрессовых условиях (лимиты API, много параллельных операций) чаще приходится продумывать перезапуски на уровне обвязки и аккуратно обрабатывать коды возврата.
Даже если клиент умеет retries, полезно иметь «внешний» контур устойчивости: таймаут запуска, повтор задачи целиком и отдельную верификацию результата (количество объектов/общий объём).
Checksum: где он работает, а где даёт иллюзию
Тема checksum в S3 коварная: ETag часто воспринимают как MD5, но для multipart это обычно не так. Плюс разные провайдеры по-разному поддерживают дополнительные checksum-механизмы.
aws-cli чаще всего опирается на стандартные механизмы S3. В AWS есть расширения для checksum-алгоритмов, но на S3-совместимых стораджах это может работать неодинаково. Поэтому принцип «включил checksum и спокоен» не всегда верен.
rclone обычно даёт больше режимов проверки (размер/время/etag где применимо, отдельные режимы verify/check). Главное — понимать, что именно сравнивается. Для критичных данных часто используют двухшаговый подход: загрузка, затем отдельная проверка (и/или периодическая сверка).
s3cmd предоставляет базовые механизмы, но на «сложных» случаях (multipart, специфический ETag) вам придётся руками определить, что считать корректной проверкой. Практичный подход для бэкапов: хранить локальный manifest с хэшами и сверять выборочно или по расписанию.
Если вы шифруете данные перед отправкой в Object Storage и хотите аккуратно управлять ключами/ротацией, может пригодиться материал: как устроен rclone crypt и безопасная работа с ключами.

Scripting: удобство автоматизации и CI
В реальной эксплуатации важны не только возможности, но и то, насколько удобно вшить инструмент в пайплайн: стабильность вывода, коды возврата, предсказуемые ошибки.
aws-cli
Сильные стороны: машинный вывод (JSON для многих команд), профили, роли и интеграция с IAM (если вы в AWS). Для CI это часто «стандарт де-факто».
s3cmd
Удобен для прямолинейных shell-скриптов: залить, скачать, синкнуть. Если вы парсите вывод, заранее стандартизируйте логирование и всегда проверяйте код возврата. В сложных сценариях может не хватить машинно-читаемых ответов.
rclone
Хорош там, где нужна сложная логика синхронизации и фильтрации, и вы не хотите писать собственную систему очередей/повторов поверх bash. Часто задача решается одной командой с набором флагов.
Набор типовых сценариев и что выбрать
- Миграция данных между двумя S3/Object Storage: чаще всего удобнее rclone (несколько remote, копирование между ними, параллелизм, гибкое логирование).
- Вы в AWS и хотите «как в документации»: логичный выбор — aws-cli (минимум расхождений с AWS-поведением, привычные IAM-практики).
- Простой бэкап по cron в один бакет: подойдёт и s3cmd, и rclone. Если важнее «минимум сущностей и конфиг на ладони» — s3cmd. Если важнее устойчивость, фильтры и параллелизм — rclone.
- Очень много мелких файлов (статика, логи, артефакты): чаще выигрывает rclone, но следите за лимитами API и не выкручивайте потоки бездумно.
- Нужны предсказуемые ошибки и строгая совместимость API: чаще удобнее aws-cli.
Практичные рекомендации по эксплуатации
- Для больших файлов продумайте политику multipart и уборку незавершённых загрузок (lifecycle на бакете или регулярная очистка).
- Не полагайтесь на ETag как на универсальный checksum. Для критичных данных добавьте manifest с хэшами и проверку (хотя бы выборочную).
- Проверьте retries в песочнице на «плохой сети»: ограничьте пропускную способность, симулируйте обрывы, посмотрите, как клиент продолжает работу и как выглядит итоговый код возврата.
- Логи и метрики: сохраняйте stdout/stderr, фиксируйте длительность, количество объектов и общий объём. Так проще отличить «реально медленно» от «сегодня просто больше файлов».
- Версионируйте конфиги (без секретов): endpoint, регион, режим адресации, таймауты — это документация, которая спасает при миграциях и смене провайдера.
Мини-шпаргалка команд (без привязки к провайдеру)
Примеры ниже в общем виде. Конкретные параметры endpoint/профилей/ключей зависят от вашей инфраструктуры и политики безопасности.
aws-cli
aws s3 ls
aws s3 cp ./backup.tar s3://my-bucket/backups/backup.tar
aws s3 sync ./data s3://my-bucket/data --delete
s3cmd
s3cmd ls
s3cmd put ./backup.tar s3://my-bucket/backups/backup.tar
s3cmd sync ./data/ s3://my-bucket/data/ --delete-removed
rclone
rclone lsd remote:
rclone copy ./backup.tar remote:my-bucket/backups/
rclone sync ./data remote:my-bucket/data --delete-during
Итог: что брать в 2025
Если нужен универсальный, быстрый и «операторский» инструмент под Object Storage, который хорошо масштабируется и удобен для миграций, чаще всего выбор — rclone. Если вы живёте в AWS и цените соответствие документации и IAM-практикам — берите aws-cli. Если сценарии простые, нужен лёгкий S3-клиент для скриптов и у вас уже есть наработанные конфиги — s3cmd всё ещё уместен.
Ключевое — оценивать не только «умеет ли копировать», а как клиент ведёт себя на ваших объёмах: multipart, retries, проверки и лимиты API. Один короткий нагрузочный прогон в тестовом бакете обычно экономит часы разборов в проде.


