linux – 在保留所有属性的同时将文件移出卷然后再打开?

我有一种情况,我正在测试一个有一些元数据问题的新文件系统.所有文件都完好无损,但我最终必须将每个文件有效地移动到另一个卷,然后立即返回原位.

很明显,mv不会这样做,因为它无法保留所有属性(特别是所有时间戳).当我执行cp -p / original / path / to / file / tmp / location / file,rm / original / path / to / file,cp -p / tmp /时,我正在考虑更多的查找命令. location / file / original / path / to / file,rm / tmp / location / file.也许所有这些命令都在脚本中传递给find exec?

我不确定这里最有效的方法,但是想要一些快速的输入,以确保我覆盖我的所有基础,并有一个精确的命令,不会让我哀悼某种数据属性丢失,当它说的都是并做了.我有几百千兆字节来回移动所以我需要尽可能小心和高效.

这是我到目前为止提出的解决方案,并且会喜欢一些输入:

Shell脚本safe_move.sh:

#!/usr/bin/env bash
SRC_FILE_AND_PATH="$1"
SRC_BASENAME=`basename "$1"`
DESTINATION_PATH="/mnt/tmp"

cp -a ${SRC_FILE_AND_PATH} ${DESTINATION_PATH}/${SRC_BASENAME}
rm -f ${SRC_FILE_AND_PATH}
cp -a ${DESTINATION_PATH}/${SRC_BASENAME} ${SRC_FILE_AND_PATH}
rm -f ${DESTINATION_PATH}/${SRC_BASENAME}

这将被称为:

find /path/to/move -type f -exec safe_move.sh {} \;

有任何想法或更正?

>我确实发现了一个问题,由于修改了文件夹的子项… hrm,这将导致ALTER文件夹日期.不知道如何克服这个问题.

解决方法

考虑将tar与-p( – preserve)一起使用.那样你也有一个好的tarball来保持…你知道……以防万一.我所知道的任何元数据都不会被遗忘.如果发现我错了,我也不承担任何责任. =)

编辑:符号链接日期将不会被保留!看到?!永远不要相信具有root权限的猫.

其他选项包括cplv,但您没有至少与源大小相同的卷组. cpdup也是.如果它全部在同一个卷组上,则rsync可能是一个选项.

相关文章

文章浏览阅读1.8k次,点赞63次,收藏54次。Linux下的目录权限...
文章浏览阅读1.6k次,点赞44次,收藏38次。关于Qt的安装、Wi...
本文介绍了使用shell脚本编写一个 Hello
文章浏览阅读1.5k次,点赞37次,收藏43次。【Linux】初识Lin...
文章浏览阅读3k次,点赞34次,收藏156次。Linux超详细笔记,...
文章浏览阅读6.8k次,点赞109次,收藏114次。【Linux】 Open...