s3cmd – это кроссплатформенный инструмент командной строки для управления хранилищами объектов S3 и S3-совместимыми хранилищами.
Примечание: Для работы с s3cmd нужно зарегистрироваться в AWS (Amazon Web Services) и получить AWS Access Key и AWS Secret Key, которые понадобятся в дальнейшем.
Читайте также: Сервисы хранения объектов и блочные сервисы хранения: краткий обзор
В данном мануале вы найдете полезные советы и примеры использования утилиты s3cmd.
1: Создание
Создание хранилищ
Чтобы создать хранилище, используйте команду mb (make bucket). Она позволяет создавать несколько хранилищ одновременно.
s3cmd mb s3://spacename s3://secondspace
Создание каталогов
Хранилища объектов используют плоское пространство имен и не имеют каталогов. То, что в пути объекта выглядит как каталог, на самом деле является частью имени файла объекта. Графические интерфейсы имитируют более знакомое пользователям отображение каталогов, создавая пустой файл для каждого несуществующего элемента.
Создавать пустые файлы с помощью командной строки нет необходимости. Чтобы указать требуемый путь к файлу, добавьте его в команду put.
2: Просмотр
Просмотр хранилищ
Чтобы просмотреть список существующих хранилищ, используйте ls:
s3cmd ls
Просмотр компонентов хранилищ
Чтобы рекурсивно просмотреть содержимое одного или нескольких хранилищ, укажите эти хранилища в команде:
s3cmd ls s3://spacename s3://secondspace
Просмотр содержимого всех хранилищ
Чтобы вывести содержимое всех существующих хранилищ, используйте команду:
s3cmd la --recursive
3: Копирование
Копирование в хранилище
Для копирования файлов с локальной машины в хранилище объектов используйте команду put.
Примечание: Во все эти команды нужно добавлять завершающий слеш.
Копирование одного файла
После добавления завершающего слеша (как в приведенном ниже примере) будет добавлено исходное имя файла. Если вы пропустите завершающий слеш, то при копировании имя файла изменится (в данном случае файл будет называться path).
s3cmd put file.txt s3://spacename/path/
Копирование нескольких файлов
Чтобы скопировать несколько файлов в хранилище, используйте такой синтаксис:
s3cmd put file1.txt file2.txt path/to/file3.txt s3://spacename/path/
Копирование файлов текущего рабочего каталога
Чтобы рекурсивно скопировать все файлы из текущего рабочего каталога в хранилище, добавьте в команду put символ *.
s3cmd put * s3://spacename/path/ --recursive
Копирование файла под другим именем
Чтобы изменить имя файла при копировании в хранилище, введите новое имя файла в конце пути:
s3cmd put file.txt s3://spacename/newname.txt
Копирование на локальную машину
Для копирования файлов из хранилища на локальную машину используйте команду get.
Копирование файла
s3cmd get s3://spacename/path/to/file.txt
Копирование всех файлов каталога
Чтобы скопировать несколько файлов, добавьте в команду флаг –recursive, а в конец адреса s3 – завершающий слеш.
s3cmd get s3://spacename/path/ --recursive
Копирование файла под другим именем
Как и команда put, команда get позволяет при копировании изменить имя файла.
s3cmd get s3://spacename/file.txt newfilename.txt
4: Права доступа
Настройка перечня каталогов
Обратите внимание: s3cmd предоставляет вывод только тогда, когда команда, которую вы вводите, изменяет доступ. Если команда меняет список контроля доступа ACL (например, частный доступ на публичный), вы увидите вывод:
s3://spacename/: ACL set to Public
Если же объект уже в публичном доступе, в командной строке не будет вывода.
Чтобы установить публичный доступ, введите:
s3cmd setacl s3://spacename/ --acl-public
Чтобы заблокировать доступ, используйте:
s3cmd setacl s3://spacename/ --acl-private
Права на файлы
Команда setacl позволяет делать файлы частными; прочитать такой файл может только пользователь, у которого есть пара ключей. Также вы можете сделать файлы публичными; тогда любой пользователь сможет прочитать файл с помощью S3-совместимого клиента или через HTTPS.
Обратите внимание: s3cmd предоставляет вывод только тогда, когда команда, которую вы вводите, изменяет доступ. Если команда меняет список контроля доступа ACL (например, частный доступ на публичный), вы увидите вывод:
s3://spacename/test.txt: ACL set to Public [1 of 1].
Если же права на файл не изменились, в командной строке не будет вывода.
Чтобы сделать файл публичным:
s3cmd setacl s3://spacename/file.txt --acl-public
Чтобы сделать несколько файлов общедоступными рекурсивно, используйте флаг –recursive:
s3cmd setacl s3://spacename/path/to/files/ –acl-public –recursive
Чтобы заблокировать публичный доступ к файлу, введите:
s3cmd setacl s3://spacename/file.txt --acl-private
Чтобы сделать несколько файлов частными рекурсивно, используйте флаг –recursive:
s3cmd setacl s3://spacename/path/to/files/ --acl-private --recursive
5: Удаление
Утилита s3cmd две команды для удаления: del и rm. Они идентичны и взаимозаменяемы.
Удаление хранилища
Чтобы удалить пустое хранилище, используйте rb (remove bucket). Чтобы удалить хранилище со всем его содержимым, добавьте флаг –recursive.
s3cmd rb s3://spacename
Удаление файла
Чтобы удалить файл из хранилища, введите:
s3cmd rm s3://spacename/name/of/file
Удаление всех файлов из хранилища
Чтобы удалить из хранилища все файлы, используйте команду rm или del с флагами –recursive и –force.
s3cmd rm s3://spacename/ --recursive --force
6: Шифрование файлов
Чтобы при копировании в хранилище зашифровать файл, используйте флаги -e или –encrypt. Если вы загружаете файл с помощью s3cmd и того же файла конфигурации, s3cmd автоматически использует пароль для его расшифровки. Другим пользователям необходимо будет использовать команду
gpg -d file.txt
и ввести пароль файла, чтобы расшифровать его. s3cmd позволяет использовать только один пароль, поэтому его можете использовать вы и другие пользователи с полным административным доступом. Вы можете узнать больше о симметричном шифровании gpg по этой ссылке.
s3cmd put s3://path/to/file.txt -e
Заключение
Теперь вы знакомы с базовыми командами утилиты s3cmd 2.0.0+.
Утилита предлагает множество других флагов и команд. Подробное руководство по использованию s3cmd можно найти на сайте проекта.