我有脚本将备份文件(从PostgreSQL数据库)从服务器传输到另一个服务器并处理这些文件(这些服务器的操作系统是Ubuntu Server 14)。在处理这些文件之前,我需要检查它们是否已完全发送,我通过比较文件的大小与该文件的旧版本(新文件应该总是更大)来检查它,我通过使用命令获得文件大小stat -c %s "$File"
。
当服务器上的一些内容发生变化且备份文件正确时,问题就会发生,但比旧版本稍微小一些,因为其他脚本不会处理文件而且不应该发生。
我的问题主要是理论上的,我想知道是否有更好的方法来比较这两个文件,以确保文件没有损坏或不完整,而不需要花费太多精力(恢复数据库)。
答案 0 :(得分:1)
您可以检查两台服务器上传输文件的哈希值是否相等。如果它们相等,则文件已成功传输。例如,对于md5sum,您可以这样做:
#!/bin/bash
case "$1" in
start)
/etc/init.d/filecopy.sh &
echo $!>/var/run/filecopy.pid
;;
stop)
kill `cat /var/run/filecopy.pid`
rm /var/run/filecopy.pid
;;
restart)
$0 stop
$0 start
;;
status)
if [ -e /var/run/filecopy.pid ]; then
echo filecopy.sh is running, pid=`cat /var/run/filecopy.pid`
else
echo filecopy.sh is NOT running
exit 1
fi
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
esac
exit 0