Проблема с перемещением файлов в файловой системе NFS на Unix - PullRequest
0 голосов
/ 29 марта 2012

В настоящее время в одной директории файловой системы NFS находится 4,5 миллиона файлов. В результате любая операция чтения или записи в этом каталоге вызывает огромную задержку. Чтобы преодолеть эту проблему, все файлы в этом каталоге будут перемещены в разные каталоги в зависимости от года его создания.

Очевидно, что команда find, которую мы используем с параметром -ctime, не работает из-за большого объема файла. Мы попытались перечислить файлы в зависимости от года их создания, а затем передать список в скрипт, который будет перемещать их в цикл for. Но даже это не удалось, поскольку ls -lrt повесил трубку.

Есть ли другой способ решения этой проблемы? Пожалуйста, помогите.

Содержание скрипта: 1) filelist.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) filemove.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

1 Ответ

1 голос
/ 30 марта 2012

Используйте итератор readdir .

...