Wie bleiben Dateistruktur/Eigentümerschaft/Berechtigungen/... beim Herunterladen eines Ordners von einem Remote-Server erhalten?

Wie bleiben Dateistruktur/Eigentümerschaft/Berechtigungen/... beim Herunterladen eines Ordners von einem Remote-Server erhalten?

Ich habe ein Linux-Rootfs in einem Ordner auf einem Remote-Server kompiliert. Ich muss es herunterladen, auf eine SD-Karte auf einem lokalen Computer übertragen und es zum Booten eines eingebetteten Computers verwenden. Wie kann ich beim Herunterladen alle Attribute der Dateien beibehalten? Danke.

Antwort1

tarsollte dazu in der Lage sein. Es speichert Informationen über Besitz und Berechtigungen und ist standardmäßig rekursiv. Ich verstehe, dass der Besitz der Dateien auf der SD-Karte letztlich weder von Benutzern oder Gruppen abhängen sollte, die auf dem Server definiert sind, noch von Benutzern oder Gruppen, die auf dem lokalen Computer definiert sind; --numeric-ownerist also eine gute Idee.

--same-ownerBeim Extrahieren müssen Sie und Flags verwenden --same-permissions(die Standardeinstellung ist, wenn Sie es als Root tun).


Wenn Sie auf dem Remote-Server die Berechtigung haben, eine Datei als Blockgerät zu mounten ( losetup), können Sie innerhalb der Datei ein Dateisystem erstellen, mountund dann Ihre Dateien darauf bereitstellen, damit sie „alle Attribute beibehalten“ ( sudo cp -a). Dann (nach umount, syncund losetup -d) laden Sie nur die besagte Datei herunter und übertragen sie im Rohzustand auf eine Partition einer lokalen SD-Karte (mit dd, cp, catoder was auch immer) oder mounten sie lokal und rufen die Dateien ab.

Beachten Sie, dass viele mkfsTools mit einer normalen Datei arbeiten können. Auch moderne Implementierungen von mountkönnen eine normale Datei halbdirekt mounten (und erledigen alle losetupdamit verbundenen Dinge für Sie). Sie müssen es wahrscheinlich losetupgar nicht explizit verwenden. Es könnte so aussehen:

# on the server
truncate -s <desired_image_size> image
mkfs.<type> <options> image
sudo mount image <mountpoint>
sudo cp -a <directory>/* <mountpoint>/    # warning: * doesn't match dotfiles
sudo umount <mountpoint>

Auch wenn Sie zusätzliche Schritte benötigen, die nicht auf dem Server durchgeführt werden können, ist das Herunterladen von Dateien in Form eines ganzen DateisystemsGarantiendass alle vom Dateisystem unterstützten Funktionen während der Übertragung erhalten bleiben. Ihr Anliegen ist es, sie beim Kopieren von/auf ein anderes Dateisystem beizubehalten, aber die Übertragung selbst kann sie nicht ändern. In einigen Fällen kann dies besser sein als tar, insbesondere wenn Sie „exotische“ Funktionen benötigen (was hier jedoch nicht der Fall zu sein scheint). Daher ist diese Methode die allgemeinste.

verwandte Informationen