Возникла задача скопировать базу с одной файловой системы в другую. Общий размер 3.5 ТБ, 369 файлов. Массив параллельно не выдержит всего потока параллельно, а по одному долго писать. Написал сходу сценарий, который пишет по пять файлов параллельно, как только запишутся - запускает следующие пять.
Модернизировать можно до бесконечности. Здесь идея.
#!/bin/bash
SOURCEPATH=/dump/database/oradata/datafile
DESTPATH=/database/oradata/datafile
declare -a FILES
# /root/fil - список файлов сделанных заранее командой ls без путей, просто список файлов в столбик
FILES=(`cat /root/fil | 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 {1..5}; 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=/dump/database/oradata/datafile
DESTPATH=/database/oradata/datafile
declare -a FILES
# /root/fil - список файлов сделанных заранее командой ls без путей, просто список файлов в столбик
FILES=(`cat /root/fil | 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 {1..5}; do
#echo $n
cfile=${FILES[$index]}
echo $index "->" $cfile
(echo "COPY $cfile"; cp -p $SOURCEPATH/$cfile $DESTPATH;) &
let "index = $index +1"
done
wait
done
Комментариев нет:
Отправить комментарий