Cp
cp 預設保留文件的哪些元數據?
預設情況下,哪些文件元數據會
cp
保留,哪些文件元數據不會?例如,如果我是正確的,則更改 mtime,保留訪問列表,並且我想知道其他元數據(例如其他時間戳,…)。我正在查找 coreutils 的手冊,但在那裡找不到答案。
幾個月前,我對目標文件已經存在時的行為進行了測試:
cp
$ ls -li total 12 913966 -rw-rw-r-- 1 vagrant vagrant 30 Dec 16 20:26 file1 913965 -rwxrw---- 2 pete vagrant 39 Dec 16 20:35 file2 913965 -rwxrw---- 2 pete vagrant 39 Dec 16 20:35 hardlinktofile2 $ cat file1 This is the contents of file1 $ cat file2 This is the original contents of file2 $ cp file1 file2 $ ls -li total 12 913966 -rw-rw-r-- 1 vagrant vagrant 30 Dec 16 20:26 file1 913965 -rwxrw---- 2 pete vagrant 30 Dec 16 20:37 file2 913965 -rwxrw---- 2 pete vagrant 30 Dec 16 20:37 hardlinktofile2 $ cat file1 This is the contents of file1 $ cat file2 This is the contents of file1 $
如您所見,目標文件被原地覆蓋,其所有權限、所有權、屬性等都被保留——甚至是硬連結。源文件不會以任何方式影響這些。
預設情況下保留沒有任何意義
mtime
,事實並非如此。但是你會注意到 newmtime
不是file2
取自file1
——它取自目前系統時間。您可以在目標文件不存在的情況下進行類似的測試,但這個測試實際上更清楚地說明了這一點:當未指定任何選項時,只會復製文件的實際內容。 文件所有權、權限、ACL、mtime 等。人。不是根據源文件設置的,而是以與新創建的文件相同的方式設置。
umask
(因此,mtime
根據目前時間的權限,根據cp
程序的 EUID 的所有權等)有一個特定但常見的例外:
在缺少…之下
$$ the –preserve= $$選項,現有目標文件的權限不變。每個新文件都是以相應源文件的模式減去 set-user-ID、set-group-ID 和sticky 位作為創建模式創建的。(作業系統然後應用 umask 或預設 ACL,可能會導致更嚴格的文件模式)。
根據
info coreutils 'cp invocation'
:`xattr' Preserve extended attributes if `cp' is built with xattr support, and xattrs are supported and enabled on your file system. If SELinux context and/or ACLs are implemented using xattrs, they are preserved by this option as well.
除了使用此標誌外,這並未指定以任何其他方式保留擴展屬性。