2015-04-21 7 views
5

में आकार विसंगति मैं अपनी स्थानीय विंडोज निर्देशिका से रिमोट लिनक्स डीआईआर में कुछ फाइलों की प्रतिलिपि बनाने की कोशिश कर रहा हूं।पैरामीको त्रुटि:

यह फ़ाइल के समान प्रकार के एक्सटेंशन के लिए काम कर रहा है। लेकिन फ़ोल्डर में अलग-अलग एक्सटेंशन होने पर टूट जाता है।

कोड:

import os 
import glob 
import paramiko 
glob_pattern='*.*' 
try: 
    ssh.connect(host,username=user,password=pwd) 
    ftp = ssh.open_sftp() 

    try: 
     ftp.mkdir(dir_remote) 
     command=dir_remote+'/setuplog' 
     ftp.mkdir(command) 
     commande=dir_remote+'/emsfolder' 
     ftp.mkdir(commande) 

     try: 
      for fname in glob.glob(uploadfolder + os.sep + glob_pattern): 
       local_file = os.path.join(uploadfolder, fname) 
       remote_file = dir_remote + '/' + os.path.basename(local_file) 
       ftp.put(local_file,remote_file) 
       ftp.chmod(remote_file ,0777) 
     except IOError, e: 
      print (e) 


    except IOError, e: 
      print (e) 


except paramiko.AuthenticationException, ae: 
    print (ae) 
finally: 
    ssh.close() 

मैं 2 फ़ाइलें केवल (1.sh और 2.pl) हस्तांतरण करने के लिए कोशिश कर रहा था। जबकि 1.sh की नकल की हो गई एक 0 बाइट 2.pl फ़ाइल दूरस्थ सर्वर पर बनाई गई है और उसके बाद मैं त्रुटि मिलती है:

size mismatch in put! 0 != 2200 

मैं उपयोग कर रहा हूँ:

python 2.7, Paramiko - 1.15.2 

कृपया मदद करते हैं।

+1

का उपयोग आप इसे का समाधान हो गया कर सकते हैं? अलग-अलग एक्सटेंशन के साथ फाइल कॉपी करते समय मेरे पास एक ही समस्या है। –

उत्तर

6

मुझे संदेह है कि फ़ोल्डर में विभिन्न एक्सटेंशन के साथ इसका कोई संबंध नहीं है। paramiko के sftp_client.py:putfo() में कोड अंत में लिखा है:

s = self.stat(remotepath) 
    if s.st_size != size: 
     raise IOError('size mismatch in put! %d != %d' % (s.st_size, size)) 

मैं ने वही समस्या थी और यह पता चला कि दूरस्थ फाइल सिस्टम पूर्ण है और इस तरह paramiko नहीं/लिख सकता है फ़ाइल डाला गया था।

Btw, uploadfolder + os.sep + glob_pattern (और इसी तरह) के बजाय आप os.path.join(uploadfolder, glob_pattern)

संबंधित मुद्दे