AWS lädt den Ordner als tar.gz auf S3 hoch, ohne ihn lokal zu komprimieren

7

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

Ich habe zum Beispiel einen Ordner unter /var/testund möchte ihn hochladen/tests/test1.tar.gz

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

Michael Samsung
quelle

Antworten:

11

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

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

Brechen dieses nach unten (wobei stdinund stdoutauf die beziehen Standard - Ein- / Ausgabeströme über die Rohrleitung):

  • tar c /var/testerstellt ein tarArchiv aus /var/testund gibt es aus an stdout...
  • ... die von gzipfrom gelesen wird stdinund die gzipped Datei ( .tar.gz) wird ausgegeben an stdout...
  • ... der von aws s3 cp - "s3://tests/test1.tar.gz"from gelesen stdinund an S3 gesendet wird. Das -weist die AWS-CLI an, von zu kopieren stdin.

Dies führt den gzipVorgang weiterhin lokal aus, erfordert jedoch nicht die Erstellung einer temporären Datei, da der gesamte Stream direkt über das Netzwerk gesendet wird.

Bob
quelle
Bob, diese Antwort sieht so aus, als ob sie für SSHing-Dateien auf andere Server richtig wäre, scheint aber die Frage nach dem Hochladen auf S3 nicht zu beantworten. Es ist wahrscheinlich eine ziemlich einfache Erweiterung für jemanden, der die S3-Befehlszeilentools versteht, um diese Technik anzuwenden.
Tim
@ Tim ... irgendwie habe ich das komplett verpasst. Ich werde aktualisieren.
Bob
1
@Tim Behoben. Wahrscheinlich habe ich nur das AWS-Bit angeschaut und EC2 angenommen, während ich letzte Nacht halb geschlafen habe.
Bob
1
Einige Fragen zu dieser Lösung: - Funktioniert sie auch mit Verzeichnissen? - Wird der gesamte Inhalt der Dateien in den Speicher geladen? Gibt dies keine Probleme mit großen Dateien? - Gibt es eine Möglichkeit, Fortschritte zu sehen?
Murze
1
@ Murze (1) natürlich, das ist der springende Punkt der Verpackung, (2) nein, (3) nein, (4) nein.
Ekevoo
3

tar cvfz - / var / test | aws s3 cp - s3: //tests/test1.tar.gz

Sie müssen nicht separat gzip, tar erledigt das für Sie mit dem z Toggle ...

Das funktioniert in beide Richtungen, ich benutze es fast täglich.

Robv
quelle