Ich habe Folgendes in einem Shell-Skript, um Site-Dateien auf ein S3-CDN zu kopieren:
%Vor%Sagen Sie S3_ASSET_FOLDERS ist:
("eins /" "zwei /")
und sagen, dass beide Ordner eine Datei mit dem Namen ... "script.js"
enthaltenund sagen, ich habe eine Änderung an two / script.js vorgenommen, aber nicht an one / script.js
Beim Ausführen des obigen Befehls wird zuerst die Datei von / one / an den richtigen Ort kopiert, obwohl ich keine Ahnung habe, warum sie es so braucht:
INFO: Datei wird gesendet "/path/to/local/one/script.js", bitte warten ... Datei '/pfad/zu/local/one/script.js' gespeichert als 's3: //my.cdn/path/to/remote/one/script.js' (13551 Bytes in 0,1 Sekunden, 168,22 kB / s) [1 von 0]
... und dann eine Fernkopieroperation für den zweiten Ordner:
Fernkopie: two / script.js - & gt; script.js
Was macht es? Warum?? Diese Dateien sind nicht einmal ähnlich. Verschiedene modifizierte Zeiten, verschiedene Prüfsummen. Keine Beziehung.
Und am Ende habe ich einen s3-Bucket mit zwei falschen Dateien. Die Datei in / two / die hätte aktualisiert werden sollen, hat es nicht. Und die Datei in / one /, die sich nicht hätte ändern sollen, wird jetzt mit dem Inhalt von /two/script.js
überschriebenNatürlich mache ich etwas bizarr dumm, weil ich niemanden sehe, der dasselbe Problem hat. Aber ich habe keine Ahnung was?
Versuchen Sie zunächst, es ohne --no-check-md5
-Option auszuführen.
Zweitens empfehle ich Ihnen, auf Verzeichnisnamen, insbesondere auf Schrägstriche, zu achten.
s3cmd Dokumentation sagt:
Bei Verzeichnissen gibt es eines zu beachten: Sie können entweder das Verzeichnis und seinen Inhalt oder nur den Inhalt hochladen. Alles hängt davon ab, wie Sie die Quelle angeben. Um ein Verzeichnis hochzuladen und seinen Namen auf der entfernten Seite beizubehalten, geben Sie die Quelle ohne den nachfolgenden Schrägstrich an Um nur den Inhalt hochzuladen, geben Sie das Verzeichnis mit einem Schrägstrich
an