s3cmd
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: останавливает загрузку в случае возникновения ошибки.