AWS-Upload-Ordner als tar.gz nach S3 ohne lokale Komprimierung

2686
Michael Samsung

Wie lade ich in AWS CLI einen Ordner als tar.gzDatei hoch, ohne einen tar.gzlokalen Ordner zu erstellen ?

Zum Beispiel habe ich einen Ordner /var/testund möchte ihn hochladen/tests/test1.tar.gz

Wie mache ich das, ohne es tar.gzlokal zu machen? (Ich möchte lokalen Speicherplatz sparen, da ich auf meiner Festplatte nicht viel Speicherplatz habe.)

4

1 Antwort auf die Frage

7
Bob

Was Sie wirklich suchen, ist das Speichern einer lokalen Datei. Sie können Pipes verwenden, um die Daten von tardurch zu senden gzip, s3ohne etwas auf der Festplatte zu speichern.

tar c /var/test | gzip | aws s3 cp - "s3://tests/test1.tar.gz" 

Aufschlüsselung (wo stdinund stdoutbeziehen sich auf die Standard-Ein- / Ausgabeströme über die Pipeline):

  • tar c /var/testerstellt ein tarArchiv /var/testund gibt es an stdout...
  • ..., die durch Lesen gzipaus stdinund das gzipped Datei ( .tar.gz) ausgegeben stdout...
  • ... die durch Lesen aws s3 cp - "s3://tests/test1.tar.gz"von stdinund an S3. Das -teilt der AWS-CLI mit, von dem kopiert werden soll stdin.

Dadurch wird der gzipVorgang immer noch lokal ausgeführt, es muss jedoch keine temporäre Datei erstellt werden, da der gesamte Stream direkt über das Netzwerk gesendet wird.

Bob, diese Antwort scheint für SSHing-Dateien auf anderen Servern richtig zu sein, scheint aber nicht die Frage zu beantworten, wie sie in S3 hochgeladen werden sollen. Es ist wahrscheinlich eine recht einfache Erweiterung für jemanden, der die S3-Befehlszeilen-Tools zur Anwendung dieser Technik versteht. Tim vor 6 Jahren 0
@ Tim ... irgendwie habe ich das völlig vermisst. Ich werde es aktualisieren. Bob vor 6 Jahren 0
@Tim behoben. Vermutlich nur das AWS-Bit angesehen und letzte Nacht im Halbschlaf von der EC2 ausgegangen. Bob vor 6 Jahren 1
Ein paar Fragen zu dieser Lösung: - Funktioniert das auch mit Verzeichnissen? - Wird der gesamte Inhalt der Dateien in den Speicher geladen? Gibt es nicht Probleme mit großen Dateien? - Gibt es eine Möglichkeit, den Fortschritt zu sehen? murze vor 5 Jahren 1
@murze (1) natürlich ist das der springende Punkt der Verpackung, (2) nein, (3) nein, (4) nein. Ekevoo vor 5 Jahren 1
Wird `tar -cz / var / test | aws s3 cp - "s3: //tests/test1.tar.gz" `funktioniert auch? Ich übergebe '-z', um während des Teerbefehls zu gzip zu kommen, anstatt zu leiten. Keven vor 5 Jahren 0
@ Kevin Ich sehe nicht warum nicht. Bob vor 5 Jahren 0