Иногда нужно скопировать гору файлов, но небольшими группами, что не перегрузить систему ввода-вывода или не напрягать соседние процессы на сервере.
Вот скрипт для такой работы. Установить переменные откуда, куда и группами по сколько файлов.
Недостаток скрипта в том, что если файлы разного размера то скрипт не добавляет новые копирования пока вся группа не закончит копироваться. Если файлы одинаковые по размеру, то будет ровная работа.
#!/bin/bash
SOURCEPATH=/db1/fs0/vdb1_1.dir
DESTPATH=/tt/fs0
#GRP - count files of group
declare -i GRP=50
if ! [ -d $DESTPATH ]; then
echo "No destination directory $DESTPATH"
exit 1
fi
if ! [ -d $SOURCEPATH ]; then
echo "No source directory $SOURCEPATH"
exit 1
fi
declare -a FILES
FILES=(`ls ${SOURCEPATH} | tr '\n' ' '`)
#echo ${FILES[@]}
file_count=${#FILES[*]}
echo $file_count...
index=0
while [ "$index" -lt "$file_count" ]
do
#echo ${FILES[$index]}
echo "----------------------------"
for n in $(seq 0 $GRP); do
echo $n
cfile=${FILES[$index]}
#echo $index "->" $cfile
(echo "COPY $cfile"; cp -p $SOURCEPATH/$cfile $DESTPATH;) &
let "index = $index +1"
done
wait
done
Вот скрипт для такой работы. Установить переменные откуда, куда и группами по сколько файлов.
Недостаток скрипта в том, что если файлы разного размера то скрипт не добавляет новые копирования пока вся группа не закончит копироваться. Если файлы одинаковые по размеру, то будет ровная работа.
#!/bin/bash
SOURCEPATH=/db1/fs0/vdb1_1.dir
DESTPATH=/tt/fs0
#GRP - count files of group
declare -i GRP=50
if ! [ -d $DESTPATH ]; then
echo "No destination directory $DESTPATH"
exit 1
fi
if ! [ -d $SOURCEPATH ]; then
echo "No source directory $SOURCEPATH"
exit 1
fi
declare -a FILES
FILES=(`ls ${SOURCEPATH} | tr '\n' ' '`)
#echo ${FILES[@]}
file_count=${#FILES[*]}
echo $file_count...
index=0
while [ "$index" -lt "$file_count" ]
do
#echo ${FILES[$index]}
echo "----------------------------"
for n in $(seq 0 $GRP); do
echo $n
cfile=${FILES[$index]}
#echo $index "->" $cfile
(echo "COPY $cfile"; cp -p $SOURCEPATH/$cfile $DESTPATH;) &
let "index = $index +1"
done
wait
done
Комментариев нет:
Отправить комментарий