Shell脚本用于检查在SCP之前是否已完成写入

时间:2015-07-16 01:48:47

标签: bash shell solaris

我正在Solaris上编写一个shell脚本,以检查远程主机上的文件是否已完成写入,然后再转移到本地主机。我做了一个骨架,但有些部分我不知道该怎么做。我对命令进行了一些检查以检查文件大小,它是stat -c%s LogFiles.txt,但我不确定如何在远程主机中检查它。

# Get File Size on Remote Host
INITIALSIZE = 

sleep 5

# Get File Size on Remote Host Again

LATESTSIZE = 


#Loop 5 times
for i in {1..5}
do
    if [ "$INITIALSIZE" -ne "$LATESTSIZE"]
    then 
        sleep 5
        # Get File Size on Remote Host
    LATESTSIZE=
    else 
        scp -P 22 $id@$ip:$srcpath/\*.txt $destpath 
        break
done

1 个答案:

答案 0 :(得分:0)

假设您的测量结果为&#39;是&#34;文件大小常数为5秒&#34;,您只需使用<?php $fn = (isset($_SERVER['HTTP_X_FILENAME']) ? $_SERVER['HTTP_X_FILENAME'] : false); if ($fn) { file_put_contents( 'uploads/' . $fn, file_get_contents('php://input') ); exit; } else { $files = $_FILES['fileselect']; $uploaded['files'] = array(); foreach ($files['error'] as $id => $err) { if ($err == UPLOAD_ERR_OK) { $fn = $files['name'][$id]; $uploaded['files'][] = $files['name'][$id]; move_uploaded_file( $files['tmp_name'][$id], 'uploads/' . $fn ); } } header('Content-type: application/json; charset=utf-8'); echo json_encode($uploaded); } ,如下所示:

ssh

这可以通过管道传输或设置为本地机器上的变量,例如在你的情况下:

ssh user@remote.machine "command to execute"

无密码登录当然会跳过askpass问题。请参阅this manual中的第3.3点或示例here