Neulich hatte ich vor, einige Daten von meinem Ubuntu-Desktopsystem auf ein externes USB-Laufwerk zu sichern. Nachdem ich alle Daten auf das externe Laufwerk übertragen habe, ist mir aufgefallen, dass die Eigentümer und Berechtigungen der Dateien und Verzeichnisse auf Quelle und Ziel unterschiedlich sind. Aber ich wollte vorhandene Dateiattribute (wie Eigentümer, Gruppe und Zeitstempel usw.) an beiden Orten intakt halten. Nach einer schnellen Google-Suche und dem Durchsuchen der Manpages des Befehls „cp“ stellte ich fest, dass wir Eigentums- und Dateiberechtigungen beim Kopieren von Dateien und Verzeichnissen unter Linux intakt halten können. Wenn Sie schon einmal in einer solchen Situation waren, finden Sie hier eine schnelle Problemumgehung.
Halten Sie Eigentums- und Dateiberechtigungen intakt, wenn Sie Dateien oder Verzeichnisse unter Linux kopieren
Der cp Der Befehl hat eine Option zum Kopieren von Dateien und Verzeichnissen, behält jedoch Änderungszeiten, Zugriffszeiten und Modi der Originaldatei bei.
$ cp -rp ~/data /media/sk/sk_seagate/data/
Hier kopiere ich den Inhalt eines Ordners namens "data" auf mein externes Laufwerk.
Aus dem cp Handbuchseiten des Befehls:
-p same as --preserve=mode,ownership,timestamps --preserve[=ATTR_LIST] preserve the specified attributes (default: mode,ownership,timestamps), if possible additional attributes: context, links, xattr, all
Wenn Sie also -p verwenden Flag, werden alle vorhandenen Dateiattribute wie Modus, Eigentum und Zeitstempel der Originaldatei beibehalten.
Und das "-r" flag wird hier verwendet, um Verzeichnisse rekursiv zu kopieren. Bedeutung - es kopiert Verzeichnisse und ihre Unterverzeichnisse und Dateien.
Alternativ können Sie -a verwenden Flagge. Es enthält das Flag -r und behält alles bei, wie Links, xattr, SELinux-Attribute usw.
$ cp -a ~/data /media/sk/sk_seagate/data/
Aus den Manpages von cp command:
-a, --archive same as -dR --preserve=all
Verwenden Sie getfacl, um zu überprüfen, ob die Dateiberechtigungen und der Besitz intakt sind Befehl an beiden Orten, d.h. Quelle und Ziel.
$ getfacl ~/data
$ getfacl /media/sk/sk_seagate/data/
Wenn Sie Dateien vom lokalen System auf ein entferntes System im selben Netzwerk kopieren möchten, können Sie "scp" verwenden Befehl zum Übertragen von Dateien von einem System auf ein anderes wie unten.
$ scp -rp ~/data [email protected]:/home/senthil/
Der obige Befehl kopiert den Inhaltsordner mit dem Namen "data" von meinem lokalen System auf ein Remote-System. Hier ist 192168.225.22 die IP-Adresse meines entfernten Systems und "senthil" ist der Benutzername des entfernten Systems.
Überprüfen Sie die Dateiberechtigungen und den Besitz des "data"-Verzeichnisses auf beiden Systemen mit dem "getfacl"-Befehl.
Lassen Sie zuerst die Dateiattribute des "data"-Verzeichnisses auf dem lokalen System prüfen:
$ getfacl data/
Beispielausgabe:
# file: data/ # owner: sk # group: sk user::rwx group::rwx other::r-x
Überprüfen Sie als Nächstes die Dateiattribute des Verzeichnisses „data“ auf dem Remote-System. Sie können sich direkt beim Remote-System anmelden und die Dateiattribute eines Remote-Verzeichnisses per ssh-Befehl wie unten überprüfen.
$ ssh [email protected] getfacl data
Beispielausgabe:
[email protected]'s password: # file: data # owner: senthil # group: senthil user::rwx group::rwx other::r-x
Wie Sie vielleicht in den obigen Ausgaben bemerkt haben, sind die Eigentümer- und Gruppeninformationen (z. B. senthil) in meinem Remote-System unterschiedlich. Denn das -p Das Flag des scp-Befehls behält nicht alle Berechtigungen bei.
Aus den Manpages des scp-Befehls:
-p Preserves modification times, access times, and modes from the original file.
Es ist klar, dass das -p flag behält nur Änderungszeiten, Zugriffszeiten und Modi der Originaldatei bei, aber nicht die Eigentümerschaft . In solchen Fällen können Sie auf beiden Systemen einen gemeinsamen Benutzernamen erstellen und den obigen Befehl ausprobieren, um denselben Besitz und dieselben Dateiberechtigungen auf verschiedenen Systemen zu haben. Oder verwenden Sie einfach den "chown"-Befehl auf dem Zielsystem, um den Besitz zu ändern.
Weitere Einzelheiten finden Sie in den Manpages der cp- und scp-Befehle.
$ man cp
$ man scp
Empfohlene Lektüre:
- So kopieren Sie Dateien und ändern gleichzeitig den Besitz und die Berechtigungen
Hoffe das hilft.