it-swarm.com.de

Wie kopiere ich einen Ordner, wobei Eigentümer und Berechtigungen erhalten bleiben?

Also wollte ich meinen Home-Ordner sichern, indem ich ihn wie folgt auf ein externes Laufwerk kopierte:

Sudo cp -r /home/my_home /media/backup/my_home

Mit dem Ergebnis, dass alle Ordner auf den externen Laufwerken jetzt im Besitz von root:root Sind. Wie kann ich cp den Besitz und die Berechtigungen vom Original behalten lassen?

410
Psachnodaimonia
Sudo cp -rp /home/my_home /media/backup/my_home

Aus der CP-Manpage:

 -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
496
guido

Sie können auch rsync verwenden.

Sudo rsync -a /home/my_home/ /media/backup/my_home/

Aus der Manpage rsync:

 -a, --archive
              This  is  equivalent  to  -rlptgoD.  It  is a quick way of saying you want
              recursion and want to preserve almost everything (with -H being a  notable
              omission).    The   only  exception  to  the  above  equivalence  is  when
              --files-from is specified, in which case -r is not implied.

              Note that -a does not preserve hardlinks, because finding  multiply-linked
              files is expensive.  You must separately specify -H.

In dieser Frage finden Sie einen Vergleich zwischen cp und rsync: https://stackoverflow.com/q/6339287/406686

Beachten Sie die nachgestellten Schrägstriche (Details siehe Manpage).

98
student
cp -a

Wo -a Kurzform für --archive - im Grunde kopiert es ein Verzeichnis genau so wie es ist; Die Dateien behalten alle ihre Attribute bei und Symlinks werden nicht dereferenziert (-d).

Von man cp:

   -a, --archive
          same as -dR --preserve=all
68
Zaz

Ich verwende cp -pdRx, Wodurch -p Modus, Besitz und Zeitstempel erhalten bleiben, -d Links beibehalten (so dass Sie Symlinks erhalten, anstatt den Dateiinhalt zu kopieren), -R es rekursiv und -x bleibt auf einem Dateisystem (nur wirklich nützlich, wenn Sie / oder etwas mit einem aktiven Einhängepunkt kopieren).

PS: -R Anstelle von -r Ist nur die Gewohnheit, ls -lR Zu verwenden.

21
StarNamer

cp verfügt über eine Option zum Beibehalten des Dateieigentums. Aus der Handbuchseite von cp:

-p    Cause cp to preserve the following attributes of each source file in the copy: modification
      time, access time, file flags, file mode, user ID, and group ID, as allowed by permissions.
      Access Control Lists (ACLs) and Extended Attributes (EAs), including resource forks, will also
      be preserved.
14
Matteo

Sie können so etwas tun:

tar cf - my_home | (cd /media/backup; Sudo tar xf - )

tar behält Berechtigungen, Besitz und Verzeichnisstruktur bei, konvertiert jedoch alles in einen Bytestrom. Sie führen eine "Subshell" (die Befehle in Klammern) aus, die das Verzeichnis wechseln, und erhalten dann tar, um die Konvertierung umzukehren. Ein Steam von Bytes wird zu Verzeichnissen und Dateien mit korrektem Besitz und korrekten Berechtigungen.

12
Bruce Ediger

Die Antwort ist einfach: cp hat ein -p Option, die Berechtigungen beibehält (hier ist ein Fisch).

Aber wie Wojtek in seinem Kommentar sagt, man cp (Lesen des feinen Handbuchs) wäre ein guter Ausgangspunkt (wollen Sie lernen, wie man fischt?).

8
buckdeer

sie können keep = all verwenden. In Ihrer Kopie bleiben dann alle Attribute wie Eigentümer, Gruppe und Zeitstempel Ihrer Dateien erhalten. Führen Sie Ihre Sicherung mit dem folgenden Befehl sicher durch.

cp -r --preserve=all /home/my_home /media/backup/my_home
3
Majid Zarrin