我有一种情况,我正在测试一个有一些元数据问题的新文件系统.所有文件都完好无损,但我最终必须将每个文件有效地移动到另一个卷,然后立即返回原位.
很明显,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 {} \;
有任何想法或更正?