我愚蠢地使用 复制了大量数据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/{} {} \;