Amazon bietet jetzt auch eigene CLI-Tools an.
Von http://aws.amazon.com/cli/
Mit vertrauter Syntax können Sie den Inhalt Ihrer S3-Buckets in einer verzeichnisbasierten Auflistung anzeigen.
$ aws s3 ls s3://mybucket
LastWriteTime Length Name
------------- ------ ----
PRE myfolder/
2013-09-03 10:00:00 1234 myfile.txt
...
Sie können rekursive Uploads und Downloads mehrerer Dateien mit einem einzigen Befehl auf Ordnerebene durchführen. Die AWS CLI führt diese Übertragungen zur Steigerung der Leistung parallel aus.
$ aws s3 cp myfolder s3://mybucket/myfolder --recursive
upload: myfolder/file1.txt to s3://mybucket/myfolder/file1.txt
upload: myfolder/subfolder/file1.txt to s3://mybucket/myfolder/subfolder/file1.txt
...
Ein Sync-Befehl macht es einfach, den Inhalt eines lokalen Ordners mit einer Kopie in einem S3-Bucket zu synchronisieren.
$ aws s3 sync myfolder s3://mybucket/myfolder --exclude *.tmp
upload: myfolder/newfile.txt to s3://mybucket/myfolder/newfile.txt
...
Dokumentation für dateibezogene Befehle ist hier.
S3cmd macht was du willst. Dateien hochladen und herunterladen, Verzeichnisse synchronisieren und Buckets erstellen.
S3cmd ist ein kostenloses Befehlszeilentool und Client zum Hochladen, Abrufen und Verwalten von Daten in Amazon S3 und anderen Cloud-Speicherdienstanbietern, die das S3-Protokoll verwenden, wie z. B. Google Cloud Storage oder DreamHost DreamObjects. Es eignet sich am besten für Power-User, die mit Befehlszeilenprogrammen vertraut sind. Es ist auch ideal für Batch-Skripte und automatisierte Sicherungen auf S3, ausgelöst von Cron usw.
Wenn Sie keine zusätzlichen Tools installieren können (vielleicht befinden Sie sich auf einem gemeinsam genutzten Host) oder möchten, können Sie einfach bash, curl und openssl verwenden.
http://tmont.com/blargh/2014/1/uploading-to-s3-in-bash
file=/path/to/file/to/upload.tar.gz
bucket=your-bucket
resource="/${bucket}/${file}"
contentType="application/x-compressed-tar"
dateValue=`date -R`
stringToSign="PUT\n\n${contentType}\n${dateValue}\n${resource}"
s3Key=xxxxxxxxxxxxxxxxxxxx
s3Secret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64`
curl -L -X PUT -T "${file}" \
-H "Host: ${bucket}.s3.amazonaws.com" \
-H "Date: ${dateValue}" \
-H "Content-Type: ${contentType}" \
-H "Authorization: AWS ${s3Key}:${signature}" \
https://${bucket}.s3.amazonaws.com/${file}
Beachten Sie, dass ich dieses Skript gegenüber dem im obigen Link geändert habe. Ich habe den -L
hinzugefügt Option, da AWS dort möglicherweise eine Umleitung einfügt. Die -L
Option folgt der Weiterleitung für Sie.
Eine weitere Einschränkung. Dies funktioniert nicht für Dateien, die größer als 5 GB sind. Diese erfordern einen mehrteiligen Upload, der ein komplexeres Skript erfordern würde.