USBのスクリプトを循環コピーしてテストする
3598 ワード
この間、USBコピーのテストを行い、いくつかのテストスクリプトを蓄積しました.ディスク間のコピーもできます.ここに置いてバックアップします.
主な実現機能:
1つのストレージデバイスから別の場所にデータをコピーし、2回のコピーのデータが一致しているかどうかを比較し、システムにエラーが発生しているかどうかを判断する.
3つの方法を採用し,主にコピー状況を直感的に反映するためである.
説明は方法3を参照してください.
1、rsyncコマンドを使用してコピーし、パーセンテージプロンプトでファイルサイズを動的に表示します.
2、curlコマンドでコピーする、
進捗バーのヒント:
3、コマンドを使用してコピーし、ファイルの進捗状況を提示する:
主な実現機能:
1つのストレージデバイスから別の場所にデータをコピーし、2回のコピーのデータが一致しているかどうかを比較し、システムにエラーが発生しているかどうかを判断する.
3つの方法を採用し,主にコピー状況を直感的に反映するためである.
説明は方法3を参照してください.
1、rsyncコマンドを使用してコピーし、パーセンテージプロンプトでファイルサイズを動的に表示します.
#!/bin/bash
DEST_PATH=$1 #The dst path; Usually a /media/U-disk or /home
SOUR_PATH=$2 #The src file path; i.e the dir of testfile.tar.gz
FILE=$3 #The tar file which will be copy
#eg:run like this: sh -x cp_usb_md5.sh /media/teclast/ /home/loongson/ testdir.tar.gz
loop=0
while true; do
echo begin copy
#curl -# file:/$SOUR_PATH$FILE -o $DEST_PATH$FILE #One method use curl
rsync -av --progress $SOUR_PATH$FILE $DEST_PATH #Second method use rsync
dmesg | grep "Buffer I/O error"
if [ $? -eq 0 ];
then
echo "error is happen"
exit
else
echo compare md5sum
A=`md5sum $SOUR_PATH$FILE|awk -F ' ' '{print $1}'`
B=`md5sum $DEST_PATH$FILE|awk -F ' ' '{print $1}'`
echo $A >> md5A.txt
echo $B >> md5B.txt
test $A == $B && echo "md5sum1 = md5sum2"||echo "error"
echo begin rm
rm -rf $DEST_PATH$FILE
echo "loop $((loop++))"
sleep 3
fi
#echo 3 >/proc/sys/vm/drop_caches
done
2、curlコマンドでコピーする、
進捗バーのヒント:
#!/bin/bash
DEST_PATH=$1 #The dst path; Usually a /media/U-disk or /home
SOUR_PATH=$2 #The src file path; i.e the dir of testfile.tar.gz
FILE=$3 #The tar file which will be copy
#eg:run like this: sh -x curl_usb_md5.sh /media/teclast/testdir.tar.gz /home/loongson/testdir.tar.gz
loop=0
while true; do
echo begin copy
curl -# file:$SOUR_PATH$FILE -o $DEST_PATH$FILE #One method use curl
dmesg | grep "Buffer I/O error"
if [ $? -eq 0 ];
then
echo "error is happen"
exit
else
echo compare md5sum
A=`md5sum $SOUR_PATH$FILE|awk -F ' ' '{print $1}'`
B=`md5sum $DEST_PATH$FILE|awk -F ' ' '{print $1}'`
echo $A >> md5A.txt
echo $B >> md5B.txt
test $A == $B && echo "md5sum1 = md5sum2"||echo "error"
echo begin rm
rm -rf $DEST_PATH$FILE
echo "loop $((loop++))"
sleep 3
fi
#echo 3 >/proc/sys/vm/drop_caches
done
3、コマンドを使用してコピーし、ファイルの進捗状況を提示する:
#!/bin/bash
DEST_PATH=$1 #The dst path; Usually a /media/U-disk or /home
SOUR_PATH=$2 #The src file path; i.e the dir of testfile.tar.gz
FILE=$3 #The tar file which will be copy #
#eg:run like this: sh -x cp_usb_md5.sh /media/teclast/ /home/loongson/ testdir.tar.gz
loop=0 #
while true; do #
echo begin copy
cp -rv $SOUR_PATH$FILE $DEST_PATH #third method use cp
dmesg | grep "error" #
if [ $? -eq 0 ]; #
then
echo "error is happen"
exit #
else
echo compare md5sum # md5 ,
A=`md5sum $SOUR_PATH$FILE|awk -F ' ' '{print $1}'` #
B=`md5sum $DEST_PATH$FILE|awk -F ' ' '{print $1}'`
echo $A >> md5A.txt
echo $B >> md5B.txt
test $A == $B && echo "md5sum1 = md5sum2"||echo "error"
echo begin rm
rm -rf $DEST_PATH$FILE # ,
echo "loop $((loop++))"
sleep 3
fi
#echo 3 >/proc/sys/vm/drop_caches #
done