Скажімо, у вас є файл, file1
який, на вашу думку, повинен мати однакові атрибути file2
(ви знаєте, що file2
має правильні атрибути).
$ stat file{1,2}
File: 'file1'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 1fh/31d Inode: 2326956 Links: 1
Access: (0600/-rw-------) Uid: ( 1000/ chris) Gid: ( 1000/ chris)
Access: 2013-12-24 09:53:20.248720441 +0800
Modify: 2013-12-24 09:53:20.248720441 +0800
Change: 2013-12-24 09:53:31.011984772 +0800
Birth: -
File: 'file2'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 1fh/31d Inode: 2326957 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ chris) Gid: ( 1000/ chris)
Access: 2013-12-24 09:53:21.045382001 +0800
Modify: 2013-12-24 09:53:21.045382001 +0800
Change: 2013-12-24 09:53:21.045382001 +0800
Birth: -
Один із способів переконатись у тому, що вони відповідають, - це перевірити file2
та вручну застосувати атрибути:
$ chmod 644 file1
Це, однак, громіздко для автоматизації та сценаріїв. Простіше було б отримати атрибути file2
і застосувати їх до file1
програмного забезпечення.
$ cp --attributes-only --preserve file2 file1
$ stat file1
File: 'file1'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 1fh/31d Inode: 2326956 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ chris) Gid: ( 1000/ chris)
Access: 2013-12-24 09:53:21.045382001 +0800
Modify: 2013-12-24 09:53:21.045382001 +0800
Change: 2013-12-24 09:57:06.320604649 +0800
Birth: -
--attributes-only
нічого не робить сам по собі; його потрібно поєднувати з іншими прапорами збереження атрибутів. Від info cp
:
--attributes-only
Copy only the specified attributes of the source file to the
destination. If the destination already exists, do not alter its
contents. See the `--preserve' option for controlling which
attributes to copy.
--preserve
Вище використовується, що документально підтверджено як рівнозначне --preserve=mode,ownership,timestamps
. Внутрішньо ви можете вважати це як "не копіювати дані", а не "копіювати лише атрибути", тому вам потрібно пройти --preserve
незалежно.