changing_assets = `s3cmd sync --dry-run -P -M --exclude=*.php --delete-removed #{preprod_release_dir}/web/ #{s3_bucket} | grep -E 'delete:|upload:' | awk '{print $2}' | sed s_#{preprod_release_dir}/web__`
Команда s3cmd sync --dry-run -p -m --exclude=*.php --delete-removed #{preprod_release_dir}/web/ #{s3_bucket} | grep -e 'delete:|upload:' | awk '{print $2}' | sed s_#{preprod_release_dir}/web__
позволяет получить список локальных файлов, которые изменились с момента последней загрузки в хранилище Amazon S3.
Команда s3cmd sync
с параметрами --dry-run -p -m --exclude=*.php --delete-removed
синхронизирует локальную директорию #{preprod_release_dir}/web/ с S3-хранилищем #{s3_bucket}, но не выполняет реальную синхронизацию. Она выводит только список файлов, которые были бы удалены или загружены.
Последующие команды grep -e 'delete:|upload:'
, awk '{print $2}'
и sed s_#{preprod_release_dir}/web__
выполняют обработку вывода команды s3cmd sync
для получения только списка файлов.
Альтернативой данной команде может быть использование других инструментов для работы с Amazon S3 API, таких как AWS CLI (Command Line Interface) или программирование на языке Python с использованием библиотеки Boto3.
Аргументы, передаваемые команде, включают в себя путь к локальной директории #{preprod_release_dir}/web/ и имя S3-бакета #{s3_bucket}.