如何仅复制时间戳,或“我应该使用 cp -p”

如何仅复制时间戳,或“我应该使用 cp -p”

我愚蠢地使用 复制了大量数据cp -r

现在看看,我意识到这意味着我丢失了文件修改时间。我应该用过的cp -rp

我的目录结构和文件没有改变:现在有什么方法可以复制属性/时间戳吗?我想rsync可能有用。

答案1

这对我来说很有效:

rsync -vrt --size-only /src /dest

/src是时间戳正确且想要的文件夹。/dest文件夹文件将获取 /src 文件夹文件的修改时间。创建时间保持不变。

--size-only命令仅根据大小来比较文件,这对我来说基本上没有变化。-t时间戳上的副本。

答案2

您可以使用find和来完成此操作touch

cd destination
find -depth -exec touch -r /path/to/source/{} {} \;

-depth选项安排在设置目录内容后设置目录的时间。这假设您在它是参数的子字符串时find进行插值。{}如果没有,则调用 shell:

find -depth -exec sh -c 'for x; do touch -r "$0/$x" "$x"' /path/to/source {} +

要复制访问时间,touch -a …也请运行。

find -depth -exec touch -a -r /path/to/source/{} {} \; -exec touch -r /path/to/source/{} {} \;

相关内容