AWS CLI — консольный клиент для работы с S3-совместимыми хранилищами. Подходит для автоматизации: резервного копирования по расписанию, выгрузки логов, синхронизации каталогов.
Что понадобится
Access Key и Secret Key из личного кабинета и установленный AWS CLI версии 2.
Шаг 1. Установка
Linux:
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
macOS:
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /
Windows: скачайте установщик с сайта Amazon и запустите его. Проверьте установку командой aws --version
Шаг 2. Настройка профиля
aws configure --profile hostfly
Введите Access Key, Secret Key, регион us-east-1 и формат вывода json.
Шаг 3. Основные команды
Список бакетов:
aws s3 ls --endpoint-url https://s3.hostflyby.net --profile hostfly
Список файлов в бакете:
aws s3 ls s3://имя-бакета/ --endpoint-url https://s3.hostflyby.net --profile hostfly
Загрузка файла:
aws s3 cp файл.zip s3://имя-бакета/ --endpoint-url https://s3.hostflyby.net --profile hostfly
Скачивание файла:
aws s3 cp s3://имя-бакета/файл.zip . --endpoint-url https://s3.hostflyby.net --profile hostfly
Синхронизация каталога:
aws s3 sync /путь/к/каталогу s3://имя-бакета/ --endpoint-url https://s3.hostflyby.net --profile hostfly
Удаление файла:
aws s3 rm s3://имя-бакета/файл.zip --endpoint-url https://s3.hostflyby.net --profile hostfly
Шаг 4. Резервное копирование по расписанию
Чтобы не указывать endpoint в каждой команде, добавьте его в файл ~/.aws/config:
[profile hostfly]
region = us-east-1
endpoint_url = https://s3.hostflyby.net
Создайте скрипт /usr/local/bin/backup-to-s3.sh:
#!/bin/bash
DATE=$(date +%Y-%m-%d)
tar -czf /tmp/backup-$DATE.tar.gz /var/www
aws s3 cp /tmp/backup-$DATE.tar.gz s3://имя-бакета/backups/ --profile hostfly
rm /tmp/backup-$DATE.tar.gz
Сделайте скрипт исполняемым и добавьте задание в cron на ежедневный запуск в три часа ночи:
chmod +x /usr/local/bin/backup-to-s3.sh
crontab -e
0 3 * * * /usr/local/bin/backup-to-s3.sh
Частые ошибки
SSL validation failed. Проверьте, что endpoint указан с протоколом https.
NoSuchBucket. Имя бакета указано неверно либо бакет создан в другом хранилище.
AccessDenied при синхронизации. У ключа нет прав на запись в бакет. Проверьте политику доступа.
