【问题标题】:File movement issue on NFS file system on Unix boxUnix 机器上 NFS 文件系统上的文件移动问题
【发布时间】:2012-03-29 08:04:37
【问题描述】:

目前 NFS 文件系统的单个目录中有 450 万个文件。因此,对该目录的任何读取或写入操作都会导致巨大的延迟。 为了解决这个问题,该目录中的所有文件将根据其创建年份移动到不同的目录中。

显然,我们使用带有 -ctime 选项的 find 命令无法正常工作,因为文件量很大。 我们尝试根据创建年份列出文件,然后将列表提供给脚本,该脚本将在 for 循环中移动它们。但即使这样也失败了,因为 ls -lrt 挂了。

还有其他方法可以解决这个问题吗? 请帮忙。

脚本内容: 1) 文件列表.sh

    ls -tlr|awk '{print $8,$9,$6,$7}'|grep ^2011|awk '{print $2,$1,$3,$4}' 1>>inboundstore_$1.txt 2>>Error_$1.log
    ls -tlr|awk '{print $8,$9,$6,$7}'|grep ^2011|wc -l 1>>count_$1.log

2) 文件移动.sh

    INPUT_FILE=$1  ##text file which has the list of files from the previous script
    FINAL_LOCATION=$2  ##destination directory
    if [ -r $INPUT_FILE ]
    then
       for file in `cat $INPUT_FILE`
       do
           echo "TIME OF FILE COPY OF [$file] IS : `date`" >> xyz/IBSCopyTime.log
           mv $file $FINAL_LOCATION
       done
    else
       echo "$INPUT_FILE does not exist"   
    fi

【问题讨论】:

  • 我不明白你为什么要对ls 输出进行排序。尝试不使用 -tr 选项。
  • @ninjalj- 即使是没有 -tr 选项的简单 ls 命令也失败了。

标签: perl shell unix copy


【解决方案1】:

使用readdir 迭代器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多