sabato 27 novembre 2021

Come sincronizzare i file da Linux ad Amazon S3

AWS S3 è il servizio di cloud storage di Amazon, che consente di archiviare singoli file come oggetti in un bucket. Puoi caricare file dalla riga di comando sul tuo server Linux o persino sincronizzare intere directory su S3.

Se vuoi solo condividere file tra istanze EC2, puoi utilizzare un volume EFS e montalo direttamente su più server, eliminando del tutto il “cloud”. Ma non dovresti usarlo per tutto, perché è molto più costoso di S3, anche con Accesso non frequente attivato.

Limita l’accesso S3 a un utente IAM Il tuo server probabilmente non ha bisogno dell’accesso root completo al tuo account AWS, quindi prima di eseguire qualsiasi tipo di sincronizzazione dei file, dovresti creare un nuovo utente IAM per il tuo server. Con un utente IAM, puoi limitare il tuo server alla sola gestione dei tuoi bucket S3.

Dalla console di gestione IAM, crea un nuovo utente e abilita “Accesso programmatico”.

Ti verrà chiesto di scegliere i permessi per questo utente. Crea un nuovo gruppo e assegnagli il permesso “AmazonS3FullAccess”.

Dopodiché, ti verrà fornita una chiave di accesso e una chiave segreta. Prendi nota di questi; ti serviranno per autenticare il tuo server.

Puoi anche assegnare manualmente permessi S3 più dettagliati, come il permesso di usare un bucket specifico o solo per caricare file, ma limitando l’accesso solo a S3 dovrebbe andare bene nella maggior parte dei casi.

Sincronizzazione file con s3cmd s3cmd è un’utilità progettata per semplificare il lavoro con S3 dalla riga di comando. Non fa parte dell’AWS CLI, quindi dovrai installarlo manualmente dal gestore di pacchetti della tua distribuzione. Per i sistemi basati su Debian come Ubuntu, sarebbe:

sudo apt-get install s3cmd Una volta installato s3cmd, dovrai collegarlo all’utente IAM creato per gestire S3. Esegui la configurazione con:

s3cmd –configure You ti verrà chiesta la chiave di accesso e la chiave segreta fornite dalla Console di gestione IAM. Incolla quelli qui. Ci sono alcune altre opzioni, come cambiare gli endpoint per S3 o abilitare la crittografia, ma puoi lasciarli tutti predefiniti e selezionare semplicemente “Y” alla fine per salvare la configurazione.

Per carica un file, usa:

s3cmd put file s3://bucket Sostituendo “bucket” con il nome del tuo bucket. Per recuperare quei file, esegui:

s3cmd get s3://bucket/remotefile localfile E, se vuoi sincronizzare su un’intera directory, esegui:

s3cmd sync directory s3://bucket / Questo copierà l’intera directory in una cartella in S3. La prossima volta che lo eseguirai, copierà solo i file che sono cambiati dall’ultima volta che è stato eseguito. Non eliminerà alcun file a meno che non venga eseguito con l’opzione –delete-removed.

s3cmd sync non verrà eseguito automaticamente, quindi se desideri mantenere questa directory regolarmente aggiornato, dovrai eseguire questo comando regolarmente. Puoi automatizzarlo con cron; Apri il tuo crontab con crontab -e e aggiungi questo comando alla fine:

0 0 directory di sincronizzazione s3cmd s3://bucket >/dev/null 2>&1 Questo sincronizzerà “directory” con “bucket” una volta al giorno. A proposito, se crontab -e ti ha bloccato in vim , puoi cambiare l’editor di testo predefinito con export VISUAL=nano;, o quello che preferisci.

s3cmd ha molti sottocomandi ; puoi copiare tra i bucket con cp, spostare i file con mv e persino creare e rimuovere bucket dalla riga di comando con mb e rb, rispettivamente. Usa s3cmd -h per un elenco completo.

Un altro Opzione: AWS CLI Oltre s3cmd, ce ne sono alcune altre opzioni della riga di comando per la sincronizzazione dei file su S3. AWS fornisce i propri strumenti con l’AWS CLI. Avrai bisogno di Python 3+ e puoi installare la CLI da pip3 con:

pip3 install awscli –upgrade –user Questo installerà il aws, che puoi utilizzare per interagire con i servizi AWS. Dovrai configurarlo allo stesso modo di s3cmd, cosa che puoi fare con:

aws configure Ti verrà chiesto di inserire la chiave di accesso e la chiave segreta per il tuo utente IAM.

La sintassi per AWS CLI è simile a s3cmd. Per caricare un file, usa:

aws s3 cp file s3://bucket Per sincronizzare un’intera cartella, utilizzare:

aws s3 sync folder s3://bucket Puoi copiare e persino sincronizzare tra i bucket con gli stessi comandi. Puoi usare aws help per un elenco completo dei comandi o leggere il riferimento ai comandi sul loro sito web.

Backup completi: Restic, Duplicity Se desideri eseguire backup di grandi dimensioni, potresti voler utilizzare un altro strumento anziché una semplice utility di sincronizzazione . Quando esegui la sincronizzazione su S3 con s3cmd o AWS CLI, qualsiasi modifica apportata sovrascriverà i file correnti. Poiché la principale preoccupazione dell’archiviazione di file nel cloud non è solitamente il guasto dell’unità, ma l’eliminazione accidentale senza accesso alla cronologia delle revisioni, questo è un problema.

AWS supporta il controllo delle versioni dei file, che risolve in qualche modo questo problema , ma potresti comunque voler utilizzare un programma di backup più potente per gestirlo da solo, soprattutto se stai eseguendo backup dell’unità completa.

Duplicity è una semplice utility che esegue il backup dei file in sotto forma di volumi TAR cifrati. Il primo archivio è un backup completo e quindi tutti gli archivi successivi sono incrementali, memorizzando solo le modifiche apportate dall’ultimo archivio.

Questo è molto efficiente, ma il ripristino da un backup è meno efficiente, poiché il processo di ripristino dovrà seguire la catena delle modifiche per arrivare allo stato finale dei dati. Restic risolve questo problema archiviando i dati in blocchi crittografati deduplicati e conserva un’istantanea di ogni versione per il ripristino. In questo modo, lo stato corrente dei file è facilmente referenziabile e ogni revisione è ancora accessibile.

Entrambi gli strumenti possono essere configurati per funzionare con AWS S3, così come con più altri provider di storage. In alternativa, se desideri solo eseguire il backup di istanze EC2 basate su EBS, puoi utilizzare snapshot EBS incrementali, sebbene sia più costoso rispetto al backup manuale su S3.