Configurare AWS CLI e AWS S3
Prima di entrare nel comando aws s3 cp, devi installare e configurare correttamente l’AWS CLI sul tuo sistema. Non preoccuparti se non hai mai lavorato con AWS: la procedura di setup è semplice e richiede meno di 10 minuti.
Dividerò tutto in tre fasi semplici: installare lo strumento AWS CLI, configurare le credenziali e creare il tuo primo bucket S3 per lo storage.
Installare l’AWS CLI
Il processo di installazione varia leggermente in base al sistema operativo che utilizzi.
Per sistemi Windows:
- Vai alla pagina di documentazione ufficiale dell’AWS CLI
- Scarica l’installer Windows 64-bit
- Avvia il file scaricato e segui la procedura guidata
Per sistemi Linux:
Esegui i seguenti tre comandi dal Terminale:
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
Per sistemi macOS:
Se hai Homebrew installato, esegui questa riga dal Terminale:
brew install awscli
Se non hai Homebrew, usa invece questi due comandi:
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /
Per confermare l’installazione, esegui aws --version nel terminale. Dovresti vedere qualcosa di simile:

Immagine 1 - Versione AWS CLI
Configurare l’AWS CLI
Con la CLI installata, è il momento di impostare le credenziali AWS per l’autenticazione.
Per prima cosa, accedi al tuo account AWS e vai alla dashboard del servizio IAM. Crea un nuovo utente con accesso programmatico e associa la policy di permessi S3 appropriata:

Immagine 2 - Utente AWS IAM
Poi vai alla scheda "Security credentials" e genera una nuova coppia di access key. Assicurati di salvare sia l’Access key ID sia la Secret access key in un luogo sicuro: Amazon non mostrerà più la secret key dopo questa schermata:

Immagine 3 - Credenziali utente AWS IAM
Ora apri il terminale ed esegui il comando aws configure. Ti verranno chieste quattro informazioni: Access key ID, Secret access key, regione predefinita (io uso eu-central-1) e formato di output preferito (tipicamente json):

Immagine 4 - Configurazione AWS CLI
Per assicurarti che tutto sia collegato correttamente, verifica la tua identità con il seguente comando:
aws sts get-caller-identity
Se la configurazione è corretta, vedrai i dettagli del tuo account:

Immagine 5 - Comando di test connessione AWS CLI
Creare un bucket S3
Infine, devi creare un bucket S3 per archiviare i file che copierai.
Vai alla sezione del servizio S3 nella tua Console AWS e clicca su "Create bucket". Ricorda che i nomi dei bucket devono essere univoci a livello globale in tutto AWS. Scegli un nome distintivo, lascia le impostazioni predefinite per ora e fai clic su "Create":

Immagine 6 - Creazione bucket AWS
Una volta creato, il nuovo bucket apparirà nella console. Puoi anche confermarne l’esistenza tramite riga di comando:
aws s3 ls

Immagine 7 - Tutti i bucket S3 disponibili
Tutti i bucket S3 sono configurati come privati per impostazione predefinita, quindi tienilo a mente. Se intendi usare questo bucket per file pubblicamente accessibili, dovrai modificare le policy del bucket di conseguenza.
Ora sei pronto per iniziare a usare il comando aws s3 cp per trasferire file. Partiamo dalle basi.
Sintassi di base del comando AWS S3 cp
Ora che hai configurato tutto, vediamo l’uso di base del comando aws s3 cp. Come spesso accade con AWS, la bellezza sta nella semplicità, anche se il comando può gestire diversi scenari di trasferimento file.
Nella sua forma più semplice, il comando aws s3 cp segue questa sintassi:
aws s3 cp <source> <destination> [options]
Dove <source> e <destination> possono essere percorsi di file locali o URI S3 (che iniziano con s3://). Vediamo i tre casi d’uso più comuni.
Copiare un file da locale a S3
Per copiare un file dal sistema locale a un bucket S3, la sorgente sarà un percorso locale e la destinazione un URI S3:
aws s3 cp /Users/dradecic/Desktop/test_file.txt s3://testbucket-aws-cp-dradecic/test_file.txt
Questo comando carica il file test_file.txt dalla directory indicata al bucket S3 specificato. Se l’operazione riesce, vedrai un output in console simile a questo:

Immagine 8 - Output della console dopo la copia del file locale
E, sulla console di gestione AWS, vedrai il file caricato:

Immagine 9 - Contenuti del bucket S3
Allo stesso modo, se vuoi copiare una cartella locale nel tuo bucket S3 e inserirla, per esempio, in un’altra cartella annidata, esegui un comando simile a questo:
aws s3 cp /Users/dradecic/Desktop/test_folder s3://testbucket-aws-cp-dradecic/my-desired-folder/test_folder/ --recursive

Immagine 10 - Contenuti del bucket S3 dopo il caricamento di una cartella
Il flag --recursive farà in modo che vengano copiati tutti i file e le sottocartelle al suo interno.
Tieni solo presente che S3 in realtà non ha cartelle: la struttura del percorso è semplicemente parte della chiave dell’oggetto, ma funziona concettualmente come le cartelle.
Copiare un file da S3 a locale
Per copiare un file da S3 al tuo sistema locale, inverti semplicemente l’ordine: la sorgente diventa l’URI S3 e la destinazione è il tuo percorso locale:
aws s3 cp s3://testbucket-aws-cp-dradecic/test_file.txt /Users/dradecic/Documents/s3-data/downloaded_test_file.txt
Questo comando scarica test_file.txt dal tuo bucket S3 e lo salva come downloaded_test_file.txt nella directory indicata. Lo vedrai subito sul tuo sistema locale:

Immagine 11 - Download di un singolo file da S3
Se ometti il nome del file di destinazione, il comando userà il nome originale:
aws s3 cp s3://testbucket-aws-cp-dradecic/test_file.txt .

Immagine 12 - Contenuto del file scaricato
Il punto (.) rappresenta la directory corrente, quindi questo scaricherà test_file.txt nella posizione attuale.
Infine, per scaricare un’intera directory, puoi usare un comando simile a questo:
aws s3 cp s3://testbucket-aws-cp-dradecic/my-desired-folder/test_folder /Users/dradecic/Documents/test_folder --recursive

Immagine 13 - Contenuti della cartella scaricata
Ricorda che il flag --recursive è essenziale quando lavori con più file: senza di esso, il comando fallirà se la sorgente è una directory.
Con questi comandi di base puoi già svolgere la maggior parte delle attività di trasferimento file di cui hai bisogno. Ma nella sezione successiva imparerai opzioni più avanzate che ti danno maggiore controllo sul processo di copia.
Opzioni e funzionalità avanzate di AWS S3 cp
AWS offre alcune opzioni avanzate che ti permettono di massimizzare le operazioni di copia dei file. In questa sezione ti mostrerò alcuni dei flag e parametri più utili per le attività quotidiane.
Uso dei flag --exclude e --include
A volte vuoi copiare solo alcuni file che corrispondono a pattern specifici. I flag --exclude e --include ti permettono di filtrare i file in base a pattern, dandoti un controllo preciso su cosa viene copiato.
Per fissare il contesto, questa è la struttura di directory con cui sto lavorando:

Immagine 14 - Struttura della directory
Ora, mettiamo che tu voglia copiare tutti i file dalla directory tranne i file .log:
aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --exclude "*.log"
Questo comando copierà tutti i file dalla directory advanced_folder su S3, escludendo qualsiasi file con estensione .log:

Immagine 15 - Risultati della copia della cartella
Puoi anche combinare più pattern. Mettiamo che tu voglia copiare solo i file HTML e CSS dalla cartella del progetto:
aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --exclude "*" --include "*.html" --include "*.css"
Questo comando prima esclude tutto (--exclude "*"), poi include solo i file con estensioni .html e .css. Il risultato è questo:

Immagine 16 - Risultati della copia della cartella (2)
Tieni presente che l’ordine dei flag conta: l’AWS CLI li elabora in sequenza, quindi se metti --include prima di --exclude, otterrai risultati diversi:
aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --include "*.html" --include "*.css" --exclude "*"
Questa volta, non è stato copiato nulla nel bucket:

Immagine 17 - Risultati della copia della cartella (3)
Specificare la classe di storage S3
Amazon S3 offre diverse classi di storage, ciascuna con costi e caratteristiche di recupero differenti. Per impostazione predefinita, aws s3 cp carica i file nella classe Standard, ma puoi specificarne un’altra con il flag --storage-class:
aws s3 cp /Users/dradecic/Desktop/large-archive.zip s3://testbucket-aws-cp-dradecic/archives/ --storage-class GLACIER
Questo comando carica large-archive.zip nella classe Glacier, che è significativamente più economica ma ha costi di recupero più alti e tempi di recupero più lunghi:

Immagine 18 - Copia di file su S3 con classi di storage diverse
Le classi di storage disponibili includono:
STANDARD(predefinita): storage generico con alta durabilità e disponibilità.REDUCED_REDUNDANCY(non più consigliata): opzione a minore durabilità e risparmio costi, ora deprecata.STANDARD_IA(Infrequent Access): storage a costo inferiore per dati acceduti meno frequentemente.ONEZONE_IA(Single Zone Infrequent Access): storage a basso costo e accesso infrequente in una singola Availability Zone AWS.INTELLIGENT_TIERING: sposta automaticamente i dati tra livelli di storage in base ai pattern di accesso.GLACIER: storage di archiviazione economico per conservazione a lungo termine, recupero in minuti o ore.DEEP_ARCHIVE: l’archiviazione più economica, recupero in ore, ideale per backup a lungo termine.
Se stai eseguendo backup di file a cui non ti serve accedere immediatamente, usare GLACIER o DEEP_ARCHIVE può ridurre sensibilmente i costi di storage.
Sincronizzare i file con il flag --exact-timestamps
Quando aggiorni file su S3 già esistenti, potresti voler copiare solo quelli modificati. Il flag --exact-timestamps aiuta confrontando i timestamp tra sorgente e destinazione.
Ecco un esempio:
aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --exact-timestamps
Con questo flag, il comando copierà i file solo se i loro timestamp differiscono da quelli già presenti su S3. Questo può ridurre i tempi di trasferimento e l’uso di banda quando aggiorni regolarmente grandi insiemi di file.
Perché è utile? Immagina scenari di deploy in cui vuoi aggiornare i file della tua applicazione senza trasferire inutilmente asset invariati.
Sebbene --exact-timestamps sia utile per una sorta di sincronizzazione, se ti serve una soluzione più sofisticata considera di usare aws s3 sync invece di aws s3 cp. Il comando sync è stato progettato appositamente per mantenere le directory allineate e ha capacità aggiuntive a questo scopo. Ho parlato approfonditamente del comando sync nel tutorial su AWS S3 Sync.
Con queste opzioni avanzate hai ora un controllo molto più fine sulle operazioni di file su S3. Puoi mirare a file specifici, ottimizzare i costi di storage e aggiornare i file in modo efficiente. Nella prossima sezione imparerai ad automatizzare queste operazioni con script e attività pianificate.
Automatizzare i trasferimenti con AWS S3 cp
Finora hai imparato a copiare manualmente file da e verso S3 tramite riga di comando. Uno dei maggiori vantaggi dell’uso di aws s3 cp è che puoi automatizzare facilmente questi trasferimenti, risparmiando un sacco di tempo.
Vediamo come integrare il comando aws s3 cp in script e job pianificati per trasferimenti senza intervento.
Usare AWS S3 cp negli script
Ecco un semplice esempio di script bash che esegue il backup di una directory su S3, aggiunge un timestamp al backup e implementa gestione errori e logging su file:
#!/bin/bash
# Set variables
SOURCE_DIR="/Users/dradecic/Desktop/advanced_folder"
BUCKET="s3://testbucket-aws-cp-dradecic/backups"
DATE=$(date +%Y-%m-%d-%H-%M)
BACKUP_NAME="backup-$DATE"
LOG_FILE="/Users/dradecic/logs/s3-backup-$DATE.log"
# Ensure the logs directory exists
mkdir -p "$(dirname "$LOG_FILE")"
# Create the backup and log the output
echo "Starting backup of $SOURCE_DIR to $BUCKET/$BACKUP_NAME" | tee -a $LOG_FILE
aws s3 cp $SOURCE_DIR $BUCKET/$BACKUP_NAME --recursive 2>&1 | tee -a $LOG_FILE
# Check if the backup was successful
if [ $? -eq 0 ]; then
echo "Backup completed successfully on $DATE" | tee -a $LOG_FILE
else
echo "Backup failed on $DATE" | tee -a $LOG_FILE
fi
Salvalo come backup.sh, rendilo eseguibile con chmod +x backup.sh e avrai uno script di backup riutilizzabile!
Poi eseguilo con il seguente comando:
./backup.sh

Immagine 19 - Script in esecuzione nel terminale
Subito dopo, la cartella backups nel bucket verrà popolata:

Immagine 20 - Backup archiviato sul bucket S3
Portiamo il tutto al livello successivo eseguendo lo script a intervalli pianificati.
Pianificare i trasferimenti con cron job
Ora che hai uno script, il passo successivo è programmarne l’esecuzione automatica a orari specifici.
Se sei su Linux o macOS, puoi usare cron per pianificare i backup. Ecco come impostare un cron job per eseguire lo script di backup ogni giorno a mezzanotte:
1. Apri il tuo crontab per la modifica:
crontab -e
2. Aggiungi la seguente riga per eseguire lo script ogni giorno a mezzanotte:
0 0 * * * /path/to/your/backup.sh

Immagine 21 - Cron job per eseguire lo script giornalmente
Il formato dei cron job è minute hour day-of-month month day-of-week command. Ecco qualche altro esempio:
- Esegui ogni ora:
0 * * * * /path/to/your/backup.sh - Esegui ogni lunedì alle 9:
0 9 * * 1 /path/to/your/backup.sh - Esegui il primo giorno di ogni mese:
0 0 1 * * /path/to/your/backup.sh
E questo è tutto! Lo script backup.sh ora verrà eseguito all’intervallo pianificato.
Automatizzare i trasferimenti di file su S3 è la strada giusta. È particolarmente utile per scenari come:
- Backup giornalieri di dati importanti
- Sincronizzazione di immagini prodotto su un sito web
- Spostamento dei file di log in archiviazione a lungo termine
- Distribuzione di file aggiornati di un sito web
Tecniche di automazione come queste ti aiutano a impostare un sistema affidabile che gestisce i trasferimenti senza interventi manuali. Lo scrivi una volta e poi te ne dimentichi.
Nella prossima sezione tratterò alcune best practice per rendere le operazioni con aws s3 cp più sicure ed efficienti.
Best practice per usare AWS S3 cp
Sebbene il comando aws s3 cp sia facile da usare, le cose possono andare storte.
Se segui le best practice, eviterai errori comuni, ottimizzerai le prestazioni e manterrai i tuoi dati al sicuro. Vediamo queste pratiche per rendere le operazioni di trasferimento file più efficienti.
Gestione efficiente dei file
Quando lavori con S3, organizzare i file in modo logico ti farà risparmiare tempo e grattacapi in futuro.
Per prima cosa, stabilisci una convenzione coerente per nomi di bucket e prefissi. Ad esempio, puoi separare i dati per ambiente, applicazione o data:
s3://company-backups/production/database/2023-03-13/
s3://company-backups/staging/uploads/2023-03/
Questo tipo di organizzazione rende più facile:
- Trovare rapidamente i file quando ti servono.
- Applicare le bucket policy e i permessi al livello corretto.
- Impostare regole di lifecycle per archiviare o eliminare i dati più vecchi.
Un altro consiglio: quando trasferisci grandi insiemi di file, valuta di raggruppare prima i file piccoli (usando zip o tar) e poi caricarli. In questo modo riduci il numero di chiamate API a S3, con un potenziale risparmio di costi e aumento della velocità di trasferimento.
# Instead of copying thousands of small log files
# tar them first, then upload
tar -czf example-logs-2025-03.tar.gz /var/log/application/
aws s3 cp example-logs-2025-03.tar.gz s3://testbucket-aws-cp-dradecic/logs/2025/03/
Gestire trasferimenti di grandi dimensioni
Quando copi file grandi o molti file in una volta, ci sono alcune tecniche per rendere il processo più affidabile ed efficiente.
Puoi usare il flag --quiet per ridurre l’output quando esegui script:
aws s3 cp large-directory/ s3://testbucket-aws-cp-dradecic/backups/ --recursive --quiet
Questo sopprime le informazioni di avanzamento per ogni file, rendendo i log più gestibili. Migliora anche leggermente le prestazioni.
Per file molto grandi, considera l’uso degli upload multipart con il flag --multipart-threshold:
aws s3 cp huge-file.iso s3://testbucket-aws-cp-dradecic/backups/ --multipart-threshold 100MB
L’impostazione sopra dice all’AWS CLI di suddividere i file più grandi di 100 MB in più parti per il caricamento. Questo approccio ha un paio di vantaggi:
- Se la connessione cade, va ritentata solo la parte interessata.
- Le parti possono essere caricate in parallelo, aumentando potenzialmente il throughput.
- Puoi mettere in pausa e riprendere upload di grandi dimensioni.
Quando trasferisci dati tra regioni, valuta l’uso di S3 Transfer Acceleration per upload più veloci:
aws s3 cp large-file.zip s3://testbucket-aws-cp-dradecic/backups/ --endpoint-url https://s3-accelerate.amazonaws.com
Questo instrada il trasferimento attraverso la rete edge di Amazon, accelerando sensibilmente i trasferimenti cross-region.
Garantire la sicurezza
La sicurezza dovrebbe essere sempre una priorità quando lavori con i tuoi dati nel cloud.
Per prima cosa, assicurati che i permessi IAM seguano il principio del privilegio minimo. Concedi solo i permessi specifici necessari per ogni attività.
Ecco un esempio di policy che puoi assegnare all’utente:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject"
],
"Resource": "arn:aws:s3:::testbucket-aws-cp-dradecic/backups/*"
}
]
}
Questa policy permette di copiare file da e verso solo il prefisso "backups" in "my-bucket".
Un ulteriore modo per aumentare la sicurezza è abilitare la crittografia per i dati sensibili. Puoi specificare la crittografia lato server in fase di upload:
aws s3 cp confidential.docx s3://testbucket-aws-cp-dradecic/ --sse AES256
Oppure, per maggiore sicurezza, usa AWS Key Management Service (KMS):
aws s3 cp secret-data.json s3://testbucket-aws-cp-dradecic/ --sse aws:kms --sse-kms-key-id myKMSKeyId
Per operazioni altamente sensibili, valuta l’uso di endpoint VPC per S3. In questo modo il traffico resta all’interno della rete AWS e non transita su Internet pubblica.
Nella prossima sezione imparerai a risolvere i problemi più comuni che potresti incontrare con questo comando.
Risoluzione degli errori di AWS S3 cp
Una cosa è certa: ogni tanto incontrerai problemi lavorando con aws s3 cp. Ma, comprendendo gli errori più comuni e le relative soluzioni, risparmierai tempo e frustrazione quando le cose non vanno come previsto.
In questa sezione ti mostrerò i problemi più frequenti e come risolverli.
Errori comuni e soluzioni
Errore: "Access Denied"
Probabilmente è l’errore più comune che incontrerai:
upload failed: ./myfile.txt to s3://testbucket-aws-cp-dradecic/myfile.txt An error occurred (AccessDenied) when calling the PutObject operation: Access Denied
Di solito significa una di queste tre cose:
- Il tuo utente IAM non ha permessi sufficienti per eseguire l’operazione.
- La bucket policy sta limitando l’accesso.
- Le tue credenziali AWS sono scadute.
Per il troubleshooting:
- Controlla i tuoi permessi IAM per assicurarti di avere i permessi
s3:PutObject(per gli upload) os3:GetObject(per i download). - Verifica che la bucket policy non stia limitando le tue azioni.
- Esegui
aws configureper aggiornare le credenziali se sono scadute.
Errore: "No such file or directory"
Questo errore si verifica quando il file o la directory locale che stai tentando di copiare non esiste:
upload failed: ./missing-file.txt to s3://testbucket-aws-cp-dradecic/missing-file.txt An error occurred (404) when calling the PutObject operation: Not Found
La soluzione è semplice: controlla attentamente i percorsi dei file. I percorsi fanno distinzione tra maiuscole e minuscole, quindi tienilo presente. Assicurati anche di trovarti nella directory corretta quando usi percorsi relativi.
Errore: "The specified bucket does not exist"
Se vedi questo errore:
upload failed: ./myfile.txt to s3://testbucket-aws-cp-dradecic/myfile.txt An error occurred (NoSuchBucket) when calling the PutObject operation: The specified bucket does not exist
Controlla:
- Eventuali errori di battitura nel nome del bucket.
- Se stai usando la regione AWS corretta.
- Se il bucket esiste effettivamente (potrebbe essere stato eliminato).
Puoi elencare tutti i tuoi bucket con aws s3 ls per confermare il nome corretto.
Errore: "Connection timed out"
Problemi di rete possono causare timeout di connessione:
upload failed: ./largefile.zip to s3://testbucket-aws-cp-dradecic/largefile.zip An error occurred (RequestTimeout) when calling the PutObject operation: Request timeout
Per risolvere:
- Controlla la tua connessione Internet.
- Prova a usare file più piccoli o abilita gli upload multipart per i file grandi.
- Valuta l’uso di AWS Transfer Acceleration per prestazioni migliori.
Gestire i fallimenti di upload
Gli errori sono molto più probabili durante il trasferimento di file grandi. In questi casi, cerca di gestire i fallimenti con grazia.
Ad esempio, puoi usare il flag --only-show-errors per semplificare la diagnosi degli errori negli script:
aws s3 cp large-directory/ s3://testbucket-aws-cp-dradecic/ --recursive --only-show-errors
Questo sopprime i messaggi di trasferimento riuscito, mostrando solo gli errori, il che rende il troubleshooting dei grandi trasferimenti molto più semplice.
Per gestire i trasferimenti interrotti, il comando --recursive salterà automaticamente i file già presenti nella destinazione con la stessa dimensione. Tuttavia, per essere più accurato, puoi usare i retry integrati dell’AWS CLI per problemi di rete impostando queste variabili d’ambiente:
export AWS_RETRY_MODE=standard
export AWS_MAX_ATTEMPTS=5
aws s3 cp large-file.zip s3://testbucket-aws-cp-dradecic/
Così indichi all’AWS CLI di ritentare automaticamente le operazioni fallite fino a 5 volte.
Ma per dataset molto grandi, considera l’uso di aws s3 sync invece di cp, poiché è progettato per gestire meglio le interruzioni:
aws s3 sync large-directory/ s3://testbucket-aws-cp-dradecic/large-directory/
Il comando sync trasferirà solo i file diversi da quelli già presenti nella destinazione, rendendolo perfetto per riprendere grandi trasferimenti interrotti.
Se comprendi questi errori comuni e implementi una corretta gestione degli errori nei tuoi script, renderai le operazioni di copia su S3 molto più robuste e affidabili.
Ricapitolando AWS S3 cp
In conclusione, il comando aws s3 cp è un punto di riferimento per copiare file locali su S3 e viceversa.
In questo articolo hai imparato tutto al riguardo. Sei partito dai fondamenti e dalla configurazione dell’ambiente e sei arrivato a scrivere script pianificati e automatizzati per la copia dei file. Hai anche imparato ad affrontare alcuni errori e sfide comuni durante lo spostamento dei file, soprattutto quelli grandi.
Quindi, se sei uno sviluppatore, un professionista dei dati o un amministratore di sistema, penso che troverai utile questo comando. Il modo migliore per prenderci confidenza è usarlo regolarmente. Assicurati di capire i fondamenti e poi dedica un po’ di tempo ad automatizzare le parti più noiose del tuo lavoro.
Per approfondire AWS, segui questi corsi di DataCamp:
Puoi anche usare DataCamp per prepararti agli esami di certificazione AWS - AWS Cloud Practitioner (CLF-C02).
FAQs
Che cos’è il comando aws s3 cp e a cosa serve?
Il comando aws s3 cp è un’utilità dell’AWS Command Line Interface che ti permette di copiare file tra il tuo sistema locale e lo storage Amazon S3. È progettato per offrire un’esperienza a riga di comando familiare, simile al comando cp di Linux, ma adattata all’interazione con i bucket S3. Puoi usarlo per trasferimenti bidirezionali, copia ricorsiva di intere strutture di directory, filtrare i file in base a pattern e persino specificare diverse classi di storage per ottimizzare i costi. È particolarmente utile per DevOps engineer, data scientist e amministratori di sistema che devono gestire in modo efficiente i dati nei bucket S3.
Come configuro l’AWS CLI per usare il comando aws s3 cp?
Per configurare l’AWS CLI e usare il comando aws s3 cp, devi installare l’AWS CLI sul tuo sistema, configurarla con le tue credenziali AWS e creare un bucket S3. Il processo di installazione varia leggermente a seconda del sistema operativo (Windows, Linux o macOS). Dopo l’installazione, devi eseguire il comando aws configure e fornire Access key ID, Secret access key, regione predefinita e formato di output preferito. Infine, devi creare un bucket S3 tramite la Console di gestione AWS o direttamente con l’AWS CLI.
Qual è la sintassi di base e quali sono i casi d’uso comuni di aws s3 cp?
La sintassi di base di aws s3 cp è aws s3 cp <source> <destination> [options], dove source e destination possono essere percorsi di file locali o URI S3 (che iniziano con s3://). I casi d’uso comuni includono caricare un file dal sistema locale su S3, scaricare un file da S3 sul sistema locale e copiare intere directory in modo ricorsivo con il flag --recursive. Puoi anche usare il comando per copiare file tra bucket S3 diversi, specificare nomi diversi per i file di destinazione e organizzare i file in strutture di "cartelle" annidate nei tuoi bucket.
Come posso usare i flag --exclude e --include per filtrare file specifici?
I flag --exclude e --include ti permettono di filtrare i file in base a pattern quando usi aws s3 cp, dandoti un controllo preciso su cosa viene copiato. Ad esempio, puoi copiare tutti i file di una directory tranne quelli con specifiche estensioni (come --exclude "*.log"), oppure puoi mirare solo a tipi di file specifici (come --include "*.html" --include "*.css" dopo aver prima escluso tutto con --exclude "*"). L’ordine di questi flag è molto importante poiché l’AWS CLI li elabora in sequenza. Questo ti permette di creare regole di filtraggio sofisticate per scenari di trasferimento complessi.
Qual è la differenza tra aws s3 cp con --exact-timestamps e aws s3 sync?
Sebbene entrambi i comandi possano essere usati per aggiornare file su S3, hanno scopi e comportamenti diversi. Il comando aws s3 cp con il flag --exact-timestamps copierà i file solo se i loro timestamp differiscono da quelli già su S3, riducendo tempi di trasferimento e banda quando aggiorni i file. Tuttavia, aws s3 sync è stato progettato specificamente per mantenere le directory sincronizzate e offre capacità di sincronizzazione più sofisticate. Se devi aggiornare regolarmente grandi insiemi di file e vuoi trasferire solo ciò che è cambiato, in generale aws s3 sync è l’opzione migliore, anche se aws s3 cp con --exact-timestamps può andare bene per esigenze di sincronizzazione più semplici.



Copiare file manualmente nello storage di AWS può essere noioso, soggetto a errori e inefficiente, soprattutto quando lavori con grandi quantità di dati. Meglio evitare.
L’AWS Command Line Interface (CLI) offre uno strumento pratico chiamato
aws s3 cpche semplifica questo processo. Questo comando ti permette di copiare file da e verso bucket Amazon S3 con comandi semplici e scriptabili che funzionano su tutti i sistemi operativi. Usare l’AWS CLI non solo fa risparmiare tempo, ma consente anche di automatizzare le attività di trasferimento file di routine.Il comando
aws s3 cpoffre molte opzioni per gestire scenari complessi di trasferimento file. Puoi copiare singoli file, trasferire intere directory in modo ricorsivo, filtrare i file in base a pattern e persino specificare classi di storage diverse per ottimizzare i costi.In questo tutorial ti guiderò in tutto ciò che devi sapere per usare
aws s3 cpin modo efficace, dai comandi di base alle tecniche avanzate e alle strategie di automazione.> Nuovo su AWS e incerto su cloud storage e S3? La nostra guida dettagliata su S3 ed EFS è il punto di partenza ideale. Se ti interessa nello specifico S3, dai un’occhiata alla nostra guida approfondita su S3.
Che cos’è AWS S3 cp?
Il comando
aws s3 cpè un’utilità all’interno dell’AWS Command Line Interface che ti permette di copiare file tra il tuo sistema locale e lo storage Amazon S3.In sostanza, è pensato per offrire un’esperienza a riga di comando familiare, simile al comando
cpstandard di Linux, ma adattata all’interazione con i bucket S3.Alla base,
aws s3 cpmette in comunicazione la tua macchina locale e l’infrastruttura di cloud storage di AWS. Quando esegui un comandoaws s3 cp, l’AWS CLI gestisce l’autenticazione e il chunking dei file per i trasferimenti di grandi dimensioni e garantisce l’integrità dei dati durante la copia. Questa utility supporta la copia di singoli file, di più file tramite wildcard e di intere strutture di directory con operazioni ricorsive.Il
aws s3 cpè capace di molte cose, te ne elenco un paio:Tuttavia, la potenza di
aws s3 cpsta nella sua flessibilità e nell’integrazione con l’ecosistema AWS. Puoi specificare parametri diversi per controllare aspetti come classe di storage, crittografia, metadati, controllo degli accessi e altro. Questo lo rende adatto sia a semplici trasferimenti una tantum, sia a soluzioni di backup complesse e automatizzate.Il comando è diverso dall’uso della Console di gestione AWS, che richiede navigazione e clic manuali. Il comando
aws s3 cppuò essere eseguito direttamente dal terminale o inserito in script e flussi di lavoro automatizzati. Questo accesso programmatico a S3 è essenziale per molti professionisti tech, in particolare DevOps engineer e data scientist.In conclusione,
aws s3 cpoffre una soluzione affidabile e scriptabile che può gestire trasferimenti massicci mantenendo le prestazioni. Può riprendere upload e download interrotti, il che lo rende particolarmente utile in caso di connessioni di rete instabili o quando si trasferiscono file estremamente grandi.A seguire, ti guiderò attraverso la parte noiosa: configurare l’AWS CLI sul tuo sistema.