Skip to main content

s3cmd

Usage with DigitalOcean

s3cmd — это сторонний инструмент командной строки, используемый для управления S3-совместимыми облачными службами хранения, такими как Amazon S3. Это не собственный инструмент Amazon, но он широко используется благодаря своим мощным функциям и простоте использования для таких задач, как загрузка, скачивание и синхронизация файлов с хранилищем S3.

Amazon предоставляет собственный инструмент AWS CLI. Он предлагает комплексные функции для загрузки, скачивания, просмотра и управления файлами в S3, аналогично s3cmd, но со встроенной поддержкой и интеграцией с другими сервисами AWS: aws s3 cp, aws s3 ls и aws s3 sync.

Выбор s3cmd вместо AWS CLI может зависеть от нескольких факторов:

  • Простота: s3cmd часто считается более простым для основных операций S3, особенно для пользователей, которым нужны только функции S3;
  • Набор функций: s3cmd включает в себя специальные функции, такие как автоматическое шифрование на стороне сервера и более детальный контроль над многочастной загрузкой.
  • Совместимость: s3cmd совместим с любым S3-совместимым сервисом, а не только с Amazon S3, что может быть полезно для пользователей, работающих с несколькими поставщиками облачных хранилищ.

AWS CLI обеспечивает более широкую интеграцию со всеми сервисами AWS, а s3cmd предлагает специализированный и простой подход к задачам, связанным с S3.

Initialize the Configuration File

По умолчанию s3cmd сохраняет свой файл конфигурации .s3cfg в домашней директории пользователя, выполнившего команду настройки. .s3cfg — это обычный текстовый файл пар ключ/значение, который можно редактировать непосредственно после его создания. Чтобы добавить необходимые значения (Access Key, Secret Key, Default Region) для связки с нашим облаком, надо сделать это:

s3cmd --configure

Put

Put one file

s3cmd put file.txt s3://spacename/path/

Put a file under a new name

s3cmd put file.txt s3://spacename/newname.txt

Put multiple files

s3cmd put file1.txt file2.txt path/to/file3.txt s3://spacename/path/

Put all files in your current directory

s3cmd put * s3://spacename/path/ --recursive

Можно установить общедоступные разрешения для всех файлов одновременно, добавив --acl-public, и аналогичным образом можно установить метаданные с помощью --add-header (например, --add-header=Cache-Control:max-age=86400):

s3cmd put * s3://yourfolder --acl-public --add-header=Cache-Control:max-age=86400 --recursive

From My Backup Setup

s3cmd --server-side-encryption put - {} --multipart-chunk-size-mb=100 --stop-on-error
  • --server-side-encryption: гарантирует, что загруженный файл зашифрован на стороне сервера;
  • put -: загружает данные со стандартного ввода;
  • --multipart-chunk-size-mb=100: разбивает файл на фрагменты по 100 МБ для более эффективной загрузки;
  • --stop-on-error: останавливает загрузку в случае возникновения ошибки.