初步实现 westdc/dataset-file-check#1 ,查看某数据集的具体文件差异

This commit is contained in:
wlx 2015-05-21 21:42:19 +08:00
parent 3015ef6747
commit a96424f86a
2 changed files with 70 additions and 0 deletions

28
dataset-diff.sh Normal file
View File

@ -0,0 +1,28 @@
#!/bin/bash
uuid=$1
if [ $# -ne 1 ]
then
echo "Usage: $0 {DATA_UUID}"
exit 1
fi
rm $uuid-db.txt $uuid-fs.txt Diff.html
php -f dataset-files.php $uuid
datapath=`head -1 $uuid-db.txt`
echo $datapath >> $uuid-fs.txt
fcount=`find -L "$datapath"/* | wc -l`
curpath=`pwd`
if [ $fcount -gt 0 ]; then
cd $datapath
find . -printf "%p %s\n" | grep -v '. 4096' | sort >> $curpath/$uuid-fs.txt
else
echo $datapath;
fi
cd $curpath
if ! diff -q $uuid-db.txt $uuid-fs.txt > /dev/null; then
vimdiff -c ":TOhtml | :wq | :q | :q" $uuid-db.txt $uuid-fs.txt
cp Diff.html /var/www/ftp2.westgis.ac.cn/diff/$uuid-diff.html
fi
exit 0

42
dataset-files.php Normal file
View File

@ -0,0 +1,42 @@
<?php
$link = pg_connect("dbname=metadata user=gis password=gispassword host=210.77.68.241");
$host='ftp2.westgis.ac.cn';
//接收uuid
if($argc==2)
{
$uuid = $argv[1];
} else {
$uuid = @$_GET['uuid'];
}
if (""===trim($uuid)) die('Please offer an UUID!');
$sql="select path from dataset where uuid='".$uuid."'";
$result=pg_query($link,$sql);
$row = pg_fetch_row($result);
$content=$row[0]."\n";
$sql="select filename,filesize from datafile where dsid in (select id from dataset where uuid='".$uuid."' and host='".$host."') order by filename";
$result = pg_query($link, $sql);
$numrows = pg_num_rows($result);
for($ri = 0; $ri < $numrows; $ri++)
{
$row = pg_fetch_array($result, $ri);
$content.="./".rtrim($row['filename'],'/')." ";
$content.=$row['filesize']."\n";
}
$filename=$uuid.'-db.txt';
if (!empty($content))
if (!file_put_contents($filename, $content, LOCK_EX))
{
sleep(1);
if (!file_put_contents($filename, $content, LOCK_EX))
{
sleep(1);
if (!file_put_contents($filename, $content, LOCK_EX))
die("error");
}
}
pg_free_result($result);
pg_close($link);