Discussion:
file copy mit ALLEN Attributen?
(zu alt für eine Antwort)
Ulli Horlacher
2024-05-20 10:56:40 UTC
Permalink
Ich dachte bisher, dass "cp -a" eine Datei mit ALLEN Attributen kopiert.
Ist aber nicht der Fall, Beispiel:

***@fex:/local/test# ll zz*
-rw-r--r-- root root 40 2024-05-20 02:02:08 zz

***@fex:/local/test# cp -av zz zz2
'zz' -> 'zz2'

***@fex:/local/test# lsattr zz zz2
-----ad--------------- zz
---------------------- zz2

***@fex:/local/test# man cp
(...)
-a, --archive
same as -dR --preserve=all
(...)


rsync kanns auch nicht:

***@fex:/local/test# rm zz2

***@fex:/local/test# rsync -vaAX zz zz2
sending incremental file list
zz

sent 142 bytes received 35 bytes 354.00 bytes/sec
total size is 40 speedup is 0.23

***@fex:/local/test# lsattr zz zz2
-----ad--------------- zz
---------------------- zz2

Wie also kopiert man ALLES?
--
Ullrich Horlacher Server und Virtualisierung
Rechenzentrum TIK
Universitaet Stuttgart E-Mail: ***@tik.uni-stuttgart.de
Allmandring 30a Tel: ++49-711-68565868
70569 Stuttgart (Germany) WWW: https://www.tik.uni-stuttgart.de/
Marcel Mueller
2024-05-20 13:39:52 UTC
Permalink
Post by Ulli Horlacher
Ich dachte bisher, dass "cp -a" eine Datei mit ALLEN Attributen kopiert.
-rw-r--r-- root root 40 2024-05-20 02:02:08 zz
'zz' -> 'zz2'
-----ad--------------- zz
---------------------- zz2
lsattr arbeitet auf EXT Dateisystemebene, cp nicht. Die EXT-Attribute
werden nicht gemappt und sind daher für cp unerreichbar.

Man kann zudem nicht erwarten, dass die Kopie /technisch/ identisch ist.
Sie ist allenfalls logisch identisch. Je nach Dateisystem wird es
technisch immer Unterschiede geben. So speichern manche Dateisysteme
kleine Dateien in den inodes, andere nicht.
Post by Ulli Horlacher
Wie also kopiert man ALLES?
Indem man nur Attribute nutzt, die auch alle können.

Siehe
https://unix.stackexchange.com/questions/118840/preserving-extended-attributes-with-cp-rsync


Marcel
Ulli Horlacher
2024-05-20 16:16:32 UTC
Permalink
Post by Marcel Mueller
lsattr arbeitet auf EXT Dateisystemebene, cp nicht.
Das ist Quatsch. Natuerlich benutzt cp das Dateisystem.
Post by Marcel Mueller
Post by Ulli Horlacher
Wie also kopiert man ALLES?
Indem man nur Attribute nutzt, die auch alle können.
Also nur das was FAT kann, kleinster gemeinsamer Nenner?

Davon abgesehen gibt es nun mal Software die chattr nutzt und braucht.
Die Dateien will ich auch kopieren koennen. Spaetestens fuers backup.
--
Ullrich Horlacher Server und Virtualisierung
Rechenzentrum TIK
Universitaet Stuttgart E-Mail: ***@tik.uni-stuttgart.de
Allmandring 30a Tel: ++49-711-68565868
70569 Stuttgart (Germany) WWW: https://www.tik.uni-stuttgart.de/
Tim Ritberg
2024-05-20 16:20:24 UTC
Permalink
Post by Ulli Horlacher
Post by Marcel Mueller
lsattr arbeitet auf EXT Dateisystemebene, cp nicht.
Das ist Quatsch. Natuerlich benutzt cp das Dateisystem.
Ähm:
https://wiki.archlinux.org/title/Extended_attributes

Tim
Marcel Mueller
2024-05-20 18:11:56 UTC
Permalink
Post by Ulli Horlacher
Post by Marcel Mueller
lsattr arbeitet auf EXT Dateisystemebene, cp nicht.
Das ist Quatsch. Natuerlich benutzt cp das Dateisystem.
Nein. cp setzt nicht auf der untersten Ebene an wie lsattr.

Letzteres gibt z.B. bei mir immer nur error, weil VMs wo nur das System
lokal liegt. Und mit nfs4 geht das schon nicht.
Post by Ulli Horlacher
Post by Marcel Mueller
Post by Ulli Horlacher
Wie also kopiert man ALLES?
Indem man nur Attribute nutzt, die auch alle können.
Also nur das was FAT kann, kleinster gemeinsamer Nenner?
Eher, was unter Linux Standard ist.

Ich habe schon mit allen möglichen Attribut-Zeug gearbeitet, aber etwas,
was nicht mal cp kann, war da bisher nicht dabei. Das append-only kannte
ich z.B. bisher gar nicht.
Post by Ulli Horlacher
Davon abgesehen gibt es nun mal Software die chattr nutzt und braucht.
Software, die nicht mit Netzlaufwerken funktioniert, brauche ich eher nicht.
Post by Ulli Horlacher
Die Dateien will ich auch kopieren koennen. Spaetestens fuers backup.
Naja, ein Backup gibt es ja schon. Aber besondere Attribute und ACLs
waren bei Backups schon immer Spaß. Es gibt wohl kaum ein Programm, was
alles kann. Wenn dann noch Sparse-Files, Reflinks usw. dazu kommen, hat
man endgültig leere Menge.


Marcel
Ulli Horlacher
2024-05-20 18:40:30 UTC
Permalink
Post by Marcel Mueller
Post by Ulli Horlacher
Post by Marcel Mueller
Post by Ulli Horlacher
Wie also kopiert man ALLES?
Indem man nur Attribute nutzt, die auch alle können.
Also nur das was FAT kann, kleinster gemeinsamer Nenner?
Eher, was unter Linux Standard ist.
chattr ist Linux standard.
Post by Marcel Mueller
Software, die nicht mit Netzlaufwerken funktioniert, brauche ich eher nicht.
Und ich brauche keine "Netzlaufwerke".
Post by Marcel Mueller
Post by Ulli Horlacher
Die Dateien will ich auch kopieren koennen. Spaetestens fuers backup.
Naja, ein Backup gibt es ja schon.
Ein Backup, das nicht alle Dateiattribute speichert ist "ein bisschen
schwanger".
Post by Marcel Mueller
waren bei Backups schon immer Spaß. Es gibt wohl kaum ein Programm, was
alles kann. Wenn dann noch Sparse-Files, Reflinks usw. dazu kommen, hat
man endgültig leere Menge.
IBM SP kann das alles.
--
Ullrich Horlacher Server und Virtualisierung
Rechenzentrum TIK
Universitaet Stuttgart E-Mail: ***@tik.uni-stuttgart.de
Allmandring 30a Tel: ++49-711-68565868
70569 Stuttgart (Germany) WWW: https://www.tik.uni-stuttgart.de/
Peter J. Holzer
2024-05-20 16:59:56 UTC
Permalink
Post by Marcel Mueller
Post by Ulli Horlacher
Ich dachte bisher, dass "cp -a" eine Datei mit ALLEN Attributen kopiert.
-rw-r--r-- root root 40 2024-05-20 02:02:08 zz
'zz' -> 'zz2'
-----ad--------------- zz
---------------------- zz2
lsattr arbeitet auf EXT Dateisystemebene, cp nicht. Die EXT-Attribute
werden nicht gemappt und sind daher für cp unerreichbar.
Die Erklärung ist nicht stichhaltig. cp könnte die genau gleichen ioctls
wie lsattr/chattr natürlich auch benutzen.

Und es ist ja nicht so, dass GNU cp Linux-Extensions prinzipiell
ignorieren würde: Extended Attributes, ACLs und Sub-Second-Timestamps
kennt es ja auch.
Post by Marcel Mueller
Man kann zudem nicht erwarten, dass die Kopie /technisch/ identisch ist.
Sie ist allenfalls logisch identisch. Je nach Dateisystem wird es
technisch immer Unterschiede geben. So speichern manche Dateisysteme
kleine Dateien in den inodes, andere nicht.
Dqs ist vollkommen irrelevant,

hp
Marc Haber
2024-05-20 18:51:55 UTC
Permalink
Post by Ulli Horlacher
Wie also kopiert man ALLES?
man cp.

--preserve[=ATTR_LIST]

|ATTR_LIST is a comma-separated list of attributes. Attributes are 'mode'
|for permissions (including any ACL and xattr permissions), 'ownership'
|for user and group, 'timestamps' for file timestamps, 'links' for hard
|links, 'context' for security context, 'xattr' for extended attributes,
|and 'all' for all attributes.

Hope this helps. Probiert habe ich es nicht.

Grüße
Marc
--
----------------------------------------------------------------------------
Marc Haber | " Questions are the | Mailadresse im Header
Rhein-Neckar, DE | Beginning of Wisdom " |
Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 6224 1600402
Peter J. Holzer
2024-05-20 21:03:51 UTC
Permalink
Post by Marc Haber
Post by Ulli Horlacher
Wie also kopiert man ALLES?
man cp.
--preserve[=ATTR_LIST]
|ATTR_LIST is a comma-separated list of attributes. Attributes are 'mode'
|for permissions (including any ACL and xattr permissions), 'ownership'
|for user and group, 'timestamps' for file timestamps, 'links' for hard
|links, 'context' for security context, 'xattr' for extended attributes,
|and 'all' for all attributes.
Hope this helps. Probiert habe ich es nicht.
In dem Teil, den Du nicht zitiert hast, stand, dass --preserve=all die
chattr-Attribute[1] nicht mitkopiert.

hp

[1] For lack of a better name.
Marc Haber
2024-05-21 06:24:33 UTC
Permalink
Post by Peter J. Holzer
Post by Marc Haber
Post by Ulli Horlacher
Wie also kopiert man ALLES?
man cp.
--preserve[=ATTR_LIST]
|ATTR_LIST is a comma-separated list of attributes. Attributes are 'mode'
|for permissions (including any ACL and xattr permissions), 'ownership'
|for user and group, 'timestamps' for file timestamps, 'links' for hard
|links, 'context' for security context, 'xattr' for extended attributes,
|and 'all' for all attributes.
Hope this helps. Probiert habe ich es nicht.
In dem Teil, den Du nicht zitiert hast, stand, dass --preserve=all die
chattr-Attribute[1] nicht mitkopiert.
--preserve=all --preserve=xattrs?

Grüße
Marc
--
----------------------------------------------------------------------------
Marc Haber | " Questions are the | Mailadresse im Header
Rhein-Neckar, DE | Beginning of Wisdom " |
Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 6224 1600402
Ulli Horlacher
2024-05-20 21:34:23 UTC
Permalink
Post by Marc Haber
Post by Ulli Horlacher
Wie also kopiert man ALLES?
man cp.
--preserve[=ATTR_LIST]
Hatte ich geschrieben und getestet: Funktioniert nicht.
Du hast das Zitat geloescht.
--
Ullrich Horlacher Server und Virtualisierung
Rechenzentrum TIK
Universitaet Stuttgart E-Mail: ***@tik.uni-stuttgart.de
Allmandring 30a Tel: ++49-711-68565868
70569 Stuttgart (Germany) WWW: https://www.tik.uni-stuttgart.de/
Marc Haber
2024-05-21 06:25:17 UTC
Permalink
Post by Ulli Horlacher
Post by Marc Haber
Post by Ulli Horlacher
Wie also kopiert man ALLES?
man cp.
--preserve[=ATTR_LIST]
Hatte ich geschrieben und getestet: Funktioniert nicht.
Du hast das Zitat geloescht.
Du hattest --preserve=xattrs probiert?

Grüße
Marc
--
----------------------------------------------------------------------------
Marc Haber | " Questions are the | Mailadresse im Header
Rhein-Neckar, DE | Beginning of Wisdom " |
Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 6224 1600402
Ulli Horlacher
2024-05-21 06:52:16 UTC
Permalink
Post by Marc Haber
Post by Ulli Horlacher
Post by Marc Haber
Post by Ulli Horlacher
Wie also kopiert man ALLES?
man cp.
--preserve[=ATTR_LIST]
Hatte ich geschrieben und getestet: Funktioniert nicht.
Du hast das Zitat geloescht.
Du hattest --preserve=xattrs probiert?
Ja, auch.
Ausserdem ist --preserve=xattr in --preserve=all enthalten.

Es gibt die Befehle xattr und chattr. Beide haben nichts miteinander zu tun.
xattr basiert auf lsetxattr(), chattr auf ioctl().
Daneben gibts noch attr, setfattr und getfattr, die zu xattr gehoeren.
--
Ullrich Horlacher Server und Virtualisierung
Rechenzentrum TIK
Universitaet Stuttgart E-Mail: ***@tik.uni-stuttgart.de
Allmandring 30a Tel: ++49-711-68565868
70569 Stuttgart (Germany) WWW: https://www.tik.uni-stuttgart.de/
Ulli Horlacher
2024-05-21 08:57:45 UTC
Permalink
Post by Ulli Horlacher
Ich dachte bisher, dass "cp -a" eine Datei mit ALLEN Attributen kopiert.
Wie also kopiert man ALLES?
https://fex.belwue.de/linuxtools/index.html#xrsync

***@fex:/local/test# xrsync -h
xrsync: rsync with chattr support
usage: xrsync [-v] [RSYNC-OPTIONS] SOURCE DESTINATION
limitation: no support for file names with newline characters

***@fex:/local/test# lsattr -l zz
zz Append_Only, No_Dump

***@fex:/local/test# xrsync -v zz zz2
$ rsync -aAXH -v zz zz2
sending incremental file list
zz

sent 142 bytes received 35 bytes 354.00 bytes/sec
total size is 40 speedup is 0.23
$ chattr =ad zz2

***@fex:/local/test# lsattr zz zz2
-----ad--------------- zz
-----ad--------------- zz2
--
Ullrich Horlacher Server und Virtualisierung
Rechenzentrum TIK
Universitaet Stuttgart E-Mail: ***@tik.uni-stuttgart.de
Allmandring 30a Tel: ++49-711-68565868
70569 Stuttgart (Germany) WWW: https://www.tik.uni-stuttgart.de/
Loading...