|
[192.168.0.191] run: pwd
[192.168.0.191] out: /home/bliu/5279/layout/IFAMP_2Aext/layout
[192.168.0.191] out:
Traceback (most recent call last):
File "/usr/local/python3/lib/python3.6/site-packages/Fabric3-1.14.post1-py3.6.egg/fabric/main.py", line 763, in main
*args, **kwargs
File "/usr/local/python3/lib/python3.6/site-packages/Fabric3-1.14.post1-py3.6.egg/fabric/tasks.py", line 387, in execute
multiprocessing
File "/usr/local/python3/lib/python3.6/site-packages/Fabric3-1.14.post1-py3.6.egg/fabric/tasks.py", line 277, in _execute
return task.run(*args, **kwargs)
File "/usr/local/python3/lib/python3.6/site-packages/Fabric3-1.14.post1-py3.6.egg/fabric/tasks.py", line 174, in run
return self.wrapped(*args, **kwargs)
File "/backupquantum/backup.py", line 127, in run_backup
get_incbackup(i)
File "/backupquantum/backup.py", line 52, in get_incbackup
get_incbackup(dire)
File "/backupquantum/backup.py", line 52, in get_incbackup
get_incbackup(dire)
File "/backupquantum/backup.py", line 52, in get_incbackup
get_incbackup(dire)
File "/backupquantum/backup.py", line 47, in get_incbackup
get_fullbackup(directory)
File "/backupquantum/backup.py", line 35, in get_fullbackup
get_fullbackup(dire) # if it's directory ,go back cicle
File "/backupquantum/backup.py", line 37, in get_fullbackup
file_get = get(fil, fil) # to the local path
File "/usr/local/python3/lib/python3.6/site-packages/Fabric3-1.14.post1-py3.6.egg/fabric/network.py", line 692, in host_prompting_wrapper
return func(*args, **kwargs)
File "/usr/local/python3/lib/python3.6/site-packages/Fabric3-1.14.post1-py3.6.egg/fabric/operati**.py", line 540, in get
ftp = SFTP(env.host_string)
File "/usr/local/python3/lib/python3.6/site-packages/Fabric3-1.14.post1-py3.6.egg/fabric/sftp.py", line 34, in __init__
self.ftp = connecti**[host_string].open_sftp()
File "/usr/local/python3/lib/python3.6/site-packages/paramiko-2.4.1-py3.6.egg/paramiko/client.py", line 521, in open_sftp
return self._transport.open_sftp_client()
File "/usr/local/python3/lib/python3.6/site-packages/paramiko-2.4.1-py3.6.egg/paramiko/transport.py", line 980, in open_sftp_client
return SFTPClient.from_transport(self)
File "/usr/local/python3/lib/python3.6/site-packages/paramiko-2.4.1-py3.6.egg/paramiko/sftp_client.py", line 139, in from_transport
chan.invoke_subsystem('sftp')
File "/usr/local/python3/lib/python3.6/site-packages/paramiko-2.4.1-py3.6.egg/paramiko/channel.py", line 63, in _check
return func(self, *args, **kwds)
File "/usr/local/python3/lib/python3.6/site-packages/paramiko-2.4.1-py3.6.egg/paramiko/channel.py", line 267, in invoke_subsystem
self._wait_for_event()
File "/usr/local/python3/lib/python3.6/site-packages/paramiko-2.4.1-py3.6.egg/paramiko/channel.py", line 1198, in _wait_for_event
raise e
paramiko.ssh_exception.SSHException: Channel closed.
[localhost] local: echo ['/backupquantum/home/bliu/5279/layout/IFAMP_2Aext/layout/pc.db'] \<--- 192.168.0.191//home/bliu/5279/layout/IFAMP_2Aext/layout/pc.db >> /backupquantum/backup.log
Disconnecting from 192.168.0.191... done.
开始以为是哪个文件有问题,但是单独用这个脚本跑这个文件就能成功,整体跑,抓一千多个文件左右后 就报上面错了 ,求助大神?什么情况,以下是我的脚本。。:
#!/usr/bin/env Python
# -*- coding:utf-8 -*-
import time
import os
import paramiko
from fabric.api import *
from fabric.colors import *
env.hosts = ['192.168.0.191']
env.user = 'root'
env.key_filename = '/root/.ssh/id_rsa'
#backupdir = ['home','home2','home3','project','apps']
backupdir = ["/home"]
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
key =paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa')
bksvpath = '/backupquantum/'
host='192.168.0.191'
def get_fullbackup(directory):
with settings(warn_only=True):
with cd(directory):
with lcd(bksvpath + directory):
get_fullbackup(dire)
for fil in get_file(directory):
file_get = get(fil, fil)
def get_incbackup(directory):
with settings(warn_only=True):
with cd(directory):
if not os.path.exists(bksvpath + directory):
get_fullbackup(directory)
else:
with lcd(bksvpath + directory):
for dire in get_dir(directory):
get_incbackup(dire)
for fil in get_file(directory):
os.chdir(bksvpath + directory)
if not os.path.exists(fil):
file_get = get(fil,fil)
elif os.path.exists(fil):
remo_md5 = run("md5sum %s | awk '{print$1}'" % fil)
s = os.popen("md5sum %s | awk '{print$1}'" % fil)
local_md5 = s.readlines()[0].split()[0]
if remo_md5 == local_md5:
print("File %s is not changed!" % fil)
else:
file_get = get(fil,fil)
def get_dir(dire):
ssh.connect(host,22,env.user,pkey=key)
stdin,stdout,stderr = ssh.exec_command("cd %s &&ls -l | grep '^d'| awk '{print i$9}' i=`pwd`'/'" % dire)
#print('host %s ---dir %s :' % (host,backupdir[0]))
dir_resault = []
for i in stdout.readlines():
dir_resault.append(i.split('\n')[0])
# print(dir_resault)
ssh.close()
return dir_resault
def get_file(dire):
ssh.connect(host,22,env.user,pkey=key)
stdin,stdout,stderr = ssh.exec_command("cd %s && ls -al | grep '^-'| awk '{print$9}' | egrep -v *\\.trn$\|*\\.dsn$\|*\\.tran$\|*\\.fsdb$\|*\\.vcd$ " % dire)
file_resault = []
for i in stdout.readlines():
file_resault.append(i.split('\n')[0])
# print(file_resault)
ssh.close()
return file_resault
def test(dire):
with settings(warn_only=True):
pass
def run_backup():
backupdate = time.strftime("%Y-%m-%d", time.localtime())
backup_start_time = time.strftime("%H:%M", time.localtime())
local("echo ======================================================================================================================== >> /backupquantum/backup.log")
local("echo ==================%s=start=backup===================== >> /backupquantum/backup.log" % backupdate)
local("echo ==================start=time==%s=========================== >> /backupquantum/backup.log" % backup_start_time)
#local_modify_time = os.stat('/root/test/backup.log').st_ctime
#print(backupdate)
#print(backup_start_time)
for i in backupdir:
get_incbackup(i)
backupdate_end = time.strftime("%Y-%m-%d", time.localtime())
backup_end_time = time.strftime("%H:%M", time.localtime())
local("echo ====================%s=end=backup===================== >> /backupquantum/backup.log" % backupdate_end)
local("echo ====================end=time==%s=========================== >> /backupquantum/backup.log" % backup_end_time)
|
|