如果我使用 将某个文件从某个地方复制到另一个地方cp
,则复制文件上的时间戳将设置为复制的时间。
有什么办法可以避免这种情况吗?
我需要在不改变时间戳的情况下复制文件。
Arj*_*jan 125
cp -p
诀窍。对于 Linux:
-p
与...一样--preserve=mode,ownership,timestamps
-p
使 cp 保留副本中每个源文件的以下属性:修改时间、访问时间、文件标志、文件模式、ACL、用户 ID 和组 ID,在权限允许的范围内。
而对于OS X:
-p
使 cp 保留副本中每个源文件的以下属性:修改时间、访问时间、文件标志、文件模式、用户 ID 和组 ID,在权限允许的范围内。访问控制列表 (ACL) 和扩展属性 (EA),包括资源分支,也将被保留。
请注意,这可能会/将更改源文件的访问时间 (atime),如ls -lu
. 此外,stat
orstat -x
可用于很好地显示数据访问、数据修改和文件状态更改时间,对于 macOS,可以使用显式格式将出生时间添加到其中:
stat -f "%n%N%nAccess (atime): %Sa%nModify (mtime): %Sm%nChange (ctime): %Sc%nBirth (Btime): %SB%n" *
Run Code Online (Sandbox Code Playgroud)
Ste*_*idt 19
当使用cp
从GNU Coreutils的,只保留时间戳,而不是属性,如用户ID,组ID或文件模式存在的速记--preserve
,它允许明确指定属性的列表被保存下来。
cp --preserve=timestamps source destination
Run Code Online (Sandbox Code Playgroud)
请注意,其他 Unices 可能不支持此语法。另一种方法是使用在大多数安装中应该可用的--times
参数rsync
。
gor*_*lla 13
在 Unix 文件系统上有 3 个时间,访问时间(atime)、修改时间(mtime)和 inode 更改时间(ctime)。您可以使用触摸程序更改访问时间和修改时间,例如
cp 原件复制 touch -r 原版复制
但是,您不能更改 inode 更改时间。