File Attributes: Difference between revisions
From Leo's Notes
This page was last edited on 11 June 2020, at 22:23.
mNo edit summary |
No edit summary |
||
| Line 61: | Line 61: | ||
| | | | ||
|} | |} | ||
== Tasks == | |||
=== Preserve File Ownership/Attributes === | |||
If you copied a set of files without preserving any of the attributes, rather than copying the data again, you can rsync again but this time using the archive option (which enables a bunch of other flags including the one for preserving ownership, permissions, and timestamps). | |||
If you're in a rut like I was after recovering data from a tape, you can do something like this: | |||
{{highlight|lang=bash|code= | |||
#!/bin/bash | |||
# Replace files here to the root filesystem, but preserving timestamps | |||
# Eg. ./etc/fstab gets copied to /etc/fstab, but with timestamps, permissions retained. | |||
find | while read i ; do | |||
if [ -f $i ] ; then | |||
touch -a -m -r /$i $i | |||
chown -v --reference /$i $i | |||
chmod -v --reference /$i $i | |||
# Replace source with the local copy I have here | |||
rm -v /$i | |||
mv -v $i /$i | |||
fi | |||
done | |||
}} | |||
Revision as of 22:23, 11 June 2020
Unix file attributes can be listed with the stat utility.
# stat /some/file
File: ‘/some/file’
Size: 13857688196 Blocks: 27066368 IO Block: 16777216 regular file
Device: 2dh/45d Inode: 12331 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:unlabeled_t:s0
Access: 2018-09-06 17:30:48.650399353 -0600
Modify: 2018-09-01 22:26:44.904672188 -0600
Change: 2020-06-11 15:53:36.225415501 -0600
Birth: -
Use the following tools to modify:
| Tool | Example | |
|---|---|---|
| Permissions | chmod <permission>
|
# chmod 644 file.dat
# chmod u+rw file.dat
|
| Ownership | chown / chgrp
|
## Both
# chown user:group file.dat
## Or individually
# chown user file.dat
# chgrp group file.dat
|
| SELinux Context | chcon -R <context>
|
# chcon -R unconfined_u:object_r:user_home_t:s0 /home/user/.ssh/
|
| Access Time | touch -a -t YYYYMMDDhhmm.ss
|
## Set access time to Dec 26 2020 at 1:30:30PM
# touch -a -t 202012261330.30 /some/file
## Set a file based on a reference file
# touch -a -r reference.ext target.ext
|
| Modify Time | touch -m -t YYYYMMDDhhmm.ss
|
## Set modification time to Dec 26 2020 at 1:30:30PM
# touch -m -t 202012261330.30 /some/file
## Set a file based on a reference file
# touch -m -r reference.ext target.ext
|
| Change Time | ??? |
Tasks
Preserve File Ownership/Attributes
If you copied a set of files without preserving any of the attributes, rather than copying the data again, you can rsync again but this time using the archive option (which enables a bunch of other flags including the one for preserving ownership, permissions, and timestamps).
If you're in a rut like I was after recovering data from a tape, you can do something like this:
#!/bin/bash
# Replace files here to the root filesystem, but preserving timestamps
# Eg. ./etc/fstab gets copied to /etc/fstab, but with timestamps, permissions retained.
find