栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python使用paramiko备份服务器fastdfs文件数据脚本,包含文件和文件夹,亲测可用

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python使用paramiko备份服务器fastdfs文件数据脚本,包含文件和文件夹,亲测可用

需求

重新开发的老系统,需要将老服务器fastdfs的文件夹和文件备份。
方案一:FastDFS数据迁移,通过配置有一套解决方案。(推荐)
老服务器在内网,需要走申请流程。
方案二:直接在服务器压缩后下载;文件相对较大,有82G,压缩后下载也比较麻烦
方案三:使用脚本备份。

最终使用的是方案三:

使用paramiko包,使用sftp协议下载文件和文件夹,脚本如下

# -*- coding: utf-8 -*-


import datetime
import os
from stat import S_ISDIR

import paramiko


def RemoteScp(host_ip, host_port, host_username, host_password, remote_path, local_path):
    scp = paramiko.Transport((host_ip, host_port))
    scp.connect(username=host_username, password=host_password)
    sftp = paramiko.SFTPClient.from_transport(scp)
    start = datetime.datetime.now()
    get_all_files_in_remote_dir(sftp, remote_path, local_path)
    end = datetime.datetime.now()
    total_time = end - start
    print("备份成功")
    print(total_time)
    scp.close()


def get_all_files_in_remote_dir(sftp, remote_dir, local_dir):
    try:
        files = sftp.listdir_attr(remote_dir)

        for x in files:
            if S_ISDIR(x.st_mode):
                remote = remote_dir + x.filename + "/"
                local = local_dir + x.filename + "/"
                if not os.path.exists(local):
                    os.mkdir(local)
                get_all_files_in_remote_dir(sftp, remote, local)
            else:
                remote = remote_dir + x.filename
                local = local_dir + x.filename
                if not os.path.exists(local):
                    sftp.get(remote, local)
    except IOError:  # 如果目录不存在则抛出异常
        return ("remote_path or local_path is not exist")


if __name__ == '__main__':
    host_ip = ''  # 远程服务器IP
    host_port = 22  # 远程服务器端口
    host_username = 'root'  # 远程服务器用户名
    host_password = 'xxxx'  # 远程服务器密码
    remote_path = '/work/'  # 这个是远程目录,服务器为linux
    local_path = 'c:\Users\\Desktop\work\'  # 本地备份的地址
    RemoteScp(host_ip, host_port, host_username, host_password, remote_path, local_path)  # 调用方法

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/357334.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号