2016-04-05 11 views

cevap

0

bu deneyin:

<?php 
include('Net/SFTP.php'); 

$sftp = new Net_SFTP('website.com'); 
if (!$sftp->login('user', 'pass')) { 
    exit('bad login'); 
} 

$sftp->chdir('/jn/xml/'); 
$files = $sftp->nlist('.', true); 
foreach ($files as $file) { 
    if ($file == '.' || $file == '..') { 
     continue; 
    } 
    $dir = '/jn/xml/backup/' . dirname($file); 
    if (!file_exists($dir)) { 
     mkdir($dir, 0777, true); 
    } 
    file_put_contents($dir . '/' . $file, $sftp->get($file)); 
} 
+0

Bu, yerel bir dizin oluşturur ve uzak sftp'deki tüm dosyaları, oluşturulan tye dizinindeki yerel makineye indirir. Jan Neuman'ın istediği değil. –

+1

@LawrenceGandhar - Bir yazım hatası olduğu anlaşılıyor. Bir dizin oluşturdum ancak yeni oluşturulan dizine yazmıyordum. Kodu güncelledim. Ancak, bariz yazım hataları durumunda düzenlemek ve düzeltmekten ziyade reddetmekten çekinmeyin! – neubert

+0

Diff: http://stackoverflow.com/posts/36558913/revisions – neubert

-2
$dir = "/jn/xml/"; 
$files = $sftp->nlist($dir, true); 
foreach($files as $file) 
{ 
    if ($file == '.' || $file == '..') continue; 
    $sftp->put($dir."backup".'/'.$file, $sftp->get($dir.'/'.$file); 
} 

Bu kod için "/ jn/xml/backup" "/ jn/xml /" dizini içeriğini kopyalar.

0

Sanırım bu, sorulan şeyi yapmalı.

phpseclib dosyasını içe aktarmak için besteci kullandım, bu tam olarak test ettiğim kod değil, diğer cevaplarda sözdizimi doğru olmalıdır.

<?php 
include('Net/SFTP.php'); 
// connection 
$sftp = new Net_SFTP('website.com'); 
if (!$sftp->login('user', 'pass')) { 
    exit('bad login'); 
} 
// Use sftp to make an mv 
$sftp->exec('mv /jn/xml/* /jn/xml/backup/'); 

Notlar:

  • dizinlerinin herhangi biri yoksa, bu başarısız olur. errormsg dosyasını almak için echo $sftp->exec(... yapın./Iç/jn/xml/Ben
  • kullanabilirdin /jn/xml.bak/ dosyaları taşıma tavsiye ediyorum 'Net/ssh2' sınıfı/jn/xml/yedekleme çünkü
  • bir uyarı alacak sadece bir mv yaptığınızdan ve herhangi bir dosya aktarmadığınızdan. Aslında, exec SSH2 sınıfından bir işlevdir ve SFTP SSH2'den miras alır.
İlgili konular