Kopieren Sie Dateien, ohne die Berechtigungen für Dateien / Ordner zu verlieren

36

Wie kann ich Dateien / Ordner von einem Ubuntu-Computer auf einem Ext4-Dateisystem auf einen anderen Ubuntu-Computer kopieren, der sich ebenfalls auf einem Ext4-Dateisystem befindet, und zwar mit einem USB-Stick, der ein VFAT-Dateisystem verwendet, ohne die Dateiberechtigungen zu verlieren?

Ich habe versucht, die grundlegende Strg-C vom Quellcomputer, dann Strg-V zu USB, dann Strg-C von USB, dann Strg-V zum Zielcomputer, und keine der Datei / Ordner-Berechtigungen bleiben intakt.

oshirowanen
quelle
vfatunterstützt keine Unix-Dateisystemberechtigungen. Sie müssen sie in einem Archiv oder ähnlichem aufbewahren, wenn Sie sie aufbewahren möchten.
Alex L.
warum nicht rsync, wie ich vorgeschlagen habe?
SiddharthaRT

Antworten:

56

Sie können ein Tar-Archiv der Quelle erstellen, dieses mit dem USB-Laufwerk auf den anderen Computer kopieren und dort extrahieren. Tar behält Dateiberechtigungen bei.

1 - Auf dem Quellcomputer:

cd /path/to/folder/to/copy
tar cvpzf put_your_name_here.tar.gz .

2 - Kopieren Sie put_your_name_here.tar.gzauf das USB-Laufwerk und dann auf den anderen Computer

3 - Auf dem Zielcomputer:

cd /path/to/destination/folder
tar xpvzf put_your_name_here.tar.gz

tar erstellt die archivierte Ordnerstruktur mit allen intakten Berechtigungen neu.

Diese Befehle archivieren den Inhalt des Quellordners und extrahieren ihn dann in den Zielordner. Wenn Sie den Ordner selbst kopieren möchten, sollten Sie in Schritt 1:

cd /path/to/parent/folder
tar cvpzf put_your_name_here.tar.gz folder_to_copy

Der gleiche Mechanismus könnte für einzelne Dateien verwendet werden.


Wenn Sie mithilfe von ssh@siddharthart answer ( rsync) eine Verbindung von einem Computer zum anderen herstellen können , ist dies möglicherweise praktischer.

sierrasdetandil
quelle
Vergessen Sie nicht das -pFlag, tarum sicherzustellen, dass die Berechtigungen erhalten bleiben.
Haziz
@haziz Eigentlich wird das -pnicht wirklich gebraucht, siehe meinen Kommentar zu @mikewhatever's Antwort. Das -zist auch nicht notwendig , wenn entpacken, da die tarLage ist , die Art der Komprimierung selbst herausfinden , es sei denn es eine alte Version ist. Das Einbinden der Flags in den Befehl tut nicht weh, hart.
Sierrasdetandil
3
Ich glaube nicht, dass Sie sich auf dieses Verhalten verlassen können. BTW zitiert aus der Man-Tar-Seite "-p, --preserve-permissions, --same-permissions extrahieren Informationen über Dateiberechtigungen (Standard für Superuser)". Dies scheint das Standardverhalten zu sein, nur wenn tar als Superuser aufgerufen wird. Würde damit nicht als Standardverhalten rechnen. Ich würde das -zFlag auch immer explizit buchstabieren, wenn ich es komprimiere oder dekomprimiere (oder -jwenn ich bzip2 verwende).
Haziz
Könnte (grundlegende) Verschlüsselung leicht hinzugefügt werden? (Ich denke, es gibt viele Möglichkeiten, dies zu tun, aber ich frage mich, aber wenn dies über die Befehlszeile erfolgt, wie würde das Passwort / der Verschlüsselungsschlüssel / die Passphrase angegeben werden? wie das Sudo-Passwort, bei dem keine Tastenanschläge sichtbar gemacht werden?)
verrückt nach natty
tarleidet unter einem sehr ernsten Problem - es verschluckt sich an Pfaden, die länger als 100 Zeichen sind.
Nathan Osman
12

Sie können rsyncmit -aflag versuchen , alle Berechtigungen beim Kopieren beizubehalten. Mir ist keine einfachere Lösung bekannt, aber ich hatte sie in der Vergangenheit zu einem bestimmten Zweck verwendet.

Rsync bietet brillante Unterstützung für wiederholtes Kopieren, Aktualisieren von Ordnern usw. und ist dabei unglaublich schnell.

SiddharthaRT
quelle
6
Ich mag rsync(liebe es, in der Tat: -]), aber die ext4-Dateiberechtigungen gehen verloren, wenn das Zielgerät vfat-formatiert ist, wie oshirowanen beschrieben. Die tarLösung ist in diesem Fall besser.
yuric
6

Ich denke, Tarieren und Enttarieren sollte sowohl für Dateien als auch für Verzeichnisse funktionieren.

zu teeren:

tar cvpfz /target.tar.gz /source/

zu enttarieren:

tar xvpfz /source/

Die pFlagge steht für --preserve-permissions.

Sie sollten man tarfür weitere Informationen sehen.

wie auch immer
quelle
Ich habe nur einen kurzen Test durchgeführt, um sicherzugehen, dass er -pnicht benötigt wird - tar behält standardmäßig die Berechtigungen bei, zumindest wenn der Benutzer Eigentümer der archivierten / extrahierten Dateien ist.
sierrasdetandil
2
Stimmt, aber Sie haben uns nicht gesagt, welche Dateien Sie kopieren möchten, und ich hatte keinen Grund, selbst etwas anzunehmen.
mikewhatever