无法通过SFTP使用PHP,ssh2下载最新文件
#!/usr/bin/php
<?php
  $username = "backup";
  $password = "xxxxxxx";
  $url      = '192.168.1.100';
  // Make our connection
  $connection = ssh2_connect($url);

  // Authenticate
  if (!ssh2_auth_password($connection, $username, $password))
     {echo('Unable to connect.');}

  // Create our SFTP resource
  if (!$sftp = ssh2_sftp($connection))
     {echo ('Unable to create SFTP connection.');}


  $localDir  = 'file:///home/hhh/Downloads/dbs';
  $remoteDir = '/home/backup/Dropbox/dbs';
  // download all the files
  $dir = ('ssh2.sftp://' . $sftp . $remoteDir);
  $numberOfFiles = 10;
  $pattern = '/\.(aes|AES)$/'; // check only file with these ext.          
  $newstamp = 2;            
  $newname = "";


  if ($handle = opendir($dir)) {               
       while (false !== ($fname = readdir($handle)))  {            
         // Eliminate current directory, parent directory            
         if (preg_match('/^\.{1,2}$/',$fname)) continue;            
         // Eliminate other pages not in pattern            
         if (! preg_match($pattern,$fname)) continue;            
         $timedat = filemtime("$dir/$fname");
         $fils[$fname] = $timedat;            
         if ($timedat > $newstamp) {
            $newstamp = $timedat;
            $newname = $fname;
          }
         }
        }
  closedir ($handle);

  arsort ($fils, SORT_NUMERIC);
  sfor($i = 0; $i < $numberOfFiles ; $i++)
  $fils2 = array_keys($fils);
  $i = 0;

  foreach($fils2 as $s){
    $i++;
    echo "$i " . $s . "<br>
";
    if($i == $numberOfFiles )break;
  }
  // $newstamp is the time for the latest file
  // $newname is the name of the latest file
  // print last mod.file - format date as you like            

$rttp = ssh2_scp_recv($connection, "$remoteDir/$newname", "$localDir/$newname")

?>

I have been trying to download the latest FILES from a directory using sftp. I have only managed to download ONE file instead to 10. I also was able to tweak it to download all the files but that is not i what I was after.

I would like to make it work so that I can be able to download a certain X number of files.

1个回答



 #!/ usr / bin / php 

&lt;?php
$ username =“user”; \ n $ password =“password”;
$ url =“host ip”;
//建立我们的连接
$ connection = ssh2_connect($ url);

//验证
if(!ssh2_auth_password($ 连接,$ username,$ password))
{echo('无法连接。');}

//创建我们的SFTP资源
if(!$ sftp = ssh2_sftp($ connection))
{echo ('无法创建SFTP连接。');}

// $ dir
$ localDir =“/ path / to / localdir /”。date('Ym-d'); \ _(ekdir - p'$ localDir'“);
echo $ localDir;

$ remoteDir =”/ path / to / remotedir“;
//下载所有文件
$ files = scandir('ssh2.sftp ://'。$ sftp。$ remoteDir);
if(!empty($ files)){
foreach($ files as $ file){
if($ file!='。'&amp;&amp; $ file!='..'){
if(substr($ file,0,11)== date('dM-Y')){

// date('dM-Y',strtotime( '昨天')#forfor前一天
#代码...
// echo $ file;
ssh2_scp_r ecv($ connection,“$ remoteDir / $ file”,“$ localDir / $ file”);

}

}
}
}
}
?&gt;
</ code> < / pre>

从远程目录下载最新文件,并按日期创建新的本地目录,下载新的远程文件</ p>
</ div>

展开原文

原文

#!/usr/bin/php

<?php
$username = "user";
$password = "password";
$url      = "host ip";
// Make our connection
$connection = ssh2_connect($url);

// Authenticate
if (!ssh2_auth_password($connection, $username, $password))
     {echo('Unable to connect.');}

// Create our SFTP resource
if (!$sftp = ssh2_sftp($connection))
     {echo ('Unable to create SFTP connection.');}

//$dir
$localDir  = "/path/to/localdir/".date('Y-m-d');
exec("mkdir -p '$localDir'");
echo $localDir;


$remoteDir = "/path/to/remotedir";
 // download all the files
$files = scandir ('ssh2.sftp://' . $sftp . $remoteDir);
if (!empty($files)) {
  foreach ($files as $file) {
    if ($file != '.' && $file != '..') {
        if (substr($file, 0, 11)== date('d-M-Y')) {

            //date('d-M-Y', strtotime('yesterday') #for retriving the previous day
            # code...
             // echo $file;
              ssh2_scp_recv($connection, "$remoteDir/$file", "$localDir/$file");

        }

    }
  }
}
 ?>

This downloads the latest files from a remote directory and creates a new local directory by date where it downloads the new remote files

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问