如何检查文件是否仍在bash中复制?
谢谢!
P.S。我是通过Ctrl + C - Ctrl-V复制文件,而不是通过Bash复制文件。
答案 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
}