如何检查文件是否仍在bash中被复制?

时间:2016-04-23 18:55:05

标签: linux bash

如何检查文件是否仍在bash中复制?

谢谢!

P.S。我是通过Ctrl + C - Ctrl-V复制文件,而不是通过Bash复制文件。

3 个答案:

答案 0 :(得分:2)

md5sum怎么样?

检查当前文件:

$ md5sum bigfile.img 
cd573cfaace07e7949bc0c46028904ff  bigfile.img`

开始复制并在复制过程中检查

$ cp bigfile.img /tmp/
$ md5sum /tmp/bigfile.img
8e516a451c4b3c440d7bf9aebc5f3639  /tmp/bigfile.img

复制完成后检查:

$ md5sum /tmp/bigfile.img 
cd573cfaace07e7949bc0c46028904ff  /tmp/bigfile.img

然后你可以使用类似的东西:

S_SUM=$(md5sum bigfile.img | cut -d " " -f 1)
D_SUM=$(md5sum /tmp/bigfile.img | cut -d " " -f 1)

并比较某些$SUM循环中的两个while true; do变量。

另一种方式 - 使用cmp并退出代码:

$ cmp -b bigfile.img /tmp/bigfile.img; echo $?
0

$ cmp -b bigfile.img /tmp/qtsingleapp-homese-8faf-3e8-lockfile &> /dev/null; echo $?
1

答案 1 :(得分:2)

最简单的方法 - 只需比较md5sum文件或文件大小

#!/bin/sh
SOURCE_SIZE=$(stat -c%s source_file)
DEST_SIZE=$(stat -c%s destination_file)
if [[ "$SOURCE_SIZE" -eq "$DEST_SIZE" ]]; then
    echo '..........'
fi

答案 2 :(得分:-1)

function check
{
oldsize=`wc -c <"$f"`
sleep 1
newsize=`wc -c <"$f"`

while [ "$oldsize" -lt "$newsize" ]
do
 echo "The file is growing... "
oldsize=`wc -c <"$f"`
sleep 1
newsize=`wc -c <"$f"`
done

if [ "$oldsize" -eq "$newsize" ]
then
   echo "The copying is done!"
fi
}