gpt4 book ai didi

Linux 如何复制符号链接(symbolic link)并保留日期

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:43 26 4
gpt4 key购买 nike

我有一个包含这种文件的目录:

  0 lrwxrwxrwx  1 utges_m gid36     12 May 17  2011 libedit.so -> libedit.so.2
0 lrwxrwxrwx 1 utges_m gid36 16 Apr 16 2009 libedit.so.2 -> libedit.so.2.0.9
352 -rw-r--r-- 1 utges_m gid36 358958 Mar 10 2010 libedit.so.2.0.9

我想复制文件和符号链接(symbolic link)并保留日期。

我从这个命令开始:

  cp -dp sourceDir/* destinationDir

结果是:

  0 lrwxrwxrwx  1 siri gid33     12 Jul  9 16:38 libedit.so -> libedit.so.2
0 lrwxrwxrwx 1 siri gid33 16 Jul 9 16:38 libedit.so.2 -> libedit.so.2.0.9
356 -rw-r--r-- 1 siri gid33 358958 Mar 10 2010 libedit.so.2.0.9

所以,我写了这个简单的 bash 脚本:

 cp -dp $OLDDIR/* $NEWDIR

ls $OLDDIR | while read f; do {
TS=$(stat -c '%Y' "$OLDDIR/$f")
DATE=$(date -d "UTC 1970-01-01 $TS secs")
echo "$f $DATE"
touch -d "${DATE}" "$NEWDIR/$f"
} done;

脚本输出为:

 libedit.so  Tue May 17 21:35:14 CEST 2011
libedit.so.2 Thu Apr 16 10:30:05 CEST 2009
libedit.so.2.0.9 Wed Mar 10 16:31:17 CET 2010

但不幸的是结果是:

  0 lrwxrwxrwx  1 siri gid33     12 Jul  9 16:55 libedit.so -> libedit.so.2
0 lrwxrwxrwx 1 siri gid33 16 Jul 9 16:55 libedit.so.2 -> libedit.so.2.0.9
356 -rw-r--r-- 1 siri gid33 358958 Mar 10 2010 libedit.so.2.0.9

我做的有什么问题吗?

我使用的是 Red Hat Enterprise Linux ES 第 4 版(Nahant 更新 3)

最佳答案

鉴于 cp -dp,您的系统可能不支持更改符号链接(symbolic link)的时间戳 应该开始工作。

此外,如果您使用 touch ,您必须添加 (GNU touch ) -h选择定位链接而不是它的目标:

来自 man touch - 注意括号中的语句:

-h, --no-dereference  affect each symbolic link instead of any referenced file  (useful only on systems that can change the timestamps of a symlink)

尝试 touch -h <someSymlink>; ls -l <someSymlink>看看它在原则上是否有效。

关于Linux 如何复制符号链接(symbolic link)并保留日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24657229/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com