
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
tar
sollte 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-owner
ist also eine gute Idee.
--same-owner
Beim 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, mount
und dann Ihre Dateien darauf bereitstellen, damit sie „alle Attribute beibehalten“ ( sudo cp -a
). Dann (nach umount
, sync
und losetup -d
) laden Sie nur die besagte Datei herunter und übertragen sie im Rohzustand auf eine Partition einer lokalen SD-Karte (mit dd
, cp
, cat
oder was auch immer) oder mounten sie lokal und rufen die Dateien ab.
Beachten Sie, dass viele mkfs
Tools mit einer normalen Datei arbeiten können. Auch moderne Implementierungen von mount
können eine normale Datei halbdirekt mounten (und erledigen alle losetup
damit verbundenen Dinge für Sie). Sie müssen es wahrscheinlich losetup
gar 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.