比较备份文件

时间:2017-04-25 13:10:06

标签: database bash shell unix

我有脚本将备份文件(从PostgreSQL数据库)从服务器传输到另一个服务器并处理这些文件(这些服务器的操作系统是Ubuntu Server 14)。在处理这些文件之前,我需要检查它们是否已完全发送,我通过比较文件的大小与该文件的旧版本(新文件应该总是更大)来检查它,我通过使用命令获得文件大小stat -c %s "$File"

当服务器上的一些内容发生变化且备份文件正确时,问题就会发生,但比旧版本稍微小一些,因为其他脚本不会处理文件而且不应该发生。

我的问题主要是理论上的,我想知道是否有更好的方法来比较这两个文件,以确保文件没有损坏或不完整,而不需要花费太多精力(恢复数据库)。

1 个答案:

答案 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