python实现定时自动备份文件到其他主机的实例代码

下面是 Python 实现定时自动备份文件到其他主机的攻略,包括两个完整的示例代码。

步骤一:安装必要的库

我们需要使用 paramiko 库来建立 SSH 连接,使用 schedule 库来实现定时任务。首先需要安装它们,可以使用 pip 命令来安装:

pip install paramiko
pip install schedule

步骤二:编写备份脚本

我们可以使用 Python 的 shutil 模块来实现备份文件的功能。以下是一个简单的备份函数:

import shutil

def backup(source_file, dest_file):
    shutil.copy2(source_file, dest_file)

该函数将 source_file 文件备份到 dest_file 中,使用了 shutil 中的 copy2 函数以保留源文件的元数据(如修改时间、修改者等)。

步骤三:编写 SSH 连接代码

使用 paramiko 库来建立 SSH 连接,读取远程主机的配置信息,然后上传备份文件。以下是一个示例代码:

import paramiko

hostname = 'example.com'
port = 22
username = 'your-username'
password = 'your-password'

def upload(file_path, remote_path):
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(hostname, port, username, password)

    sftp = ssh.open_sftp()
    sftp.put(file_path, remote_path)

    sftp.close()
    ssh.close()

该函数使用 SSHClient 建立 SSH 连接,使用这个连接来打开一个 SFTP 通道,然后上传文件。这个函数需要文件路径和远程路径作为参数。

步骤四:实现定时任务

使用 schedule 库来实现定时任务,不同的时间可以执行不同的操作。以下是一个示例代码:

import schedule
import time

def job():
    backup('/path/to/source/file', '/path/to/dest/file')
    upload('/path/to/dest/file', '/path/to/remote/dest/file')

schedule.every(1).hours.do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

这个脚本会每隔一个小时执行一次备份,并将备份文件上传到远程主机。

示例一:备份本地文件并上传到远程主机

假设我们要备份本地的 /home/user/example.txt 文件,并将备份文件上传到远程主机的 /home/user/backup/example.txt 中。可以使用以下代码:

import shutil
import paramiko

def backup(source_file, dest_file):
    shutil.copy2(source_file, dest_file)

def upload(file_path, remote_path):
    hostname = 'example.com'
    port = 22
    username = 'your-username'
    password = 'your-password'

    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(hostname, port, username, password)

    sftp = ssh.open_sftp()
    sftp.put(file_path, remote_path)

    sftp.close()
    ssh.close()

def job():
    backup('/home/user/example.txt', '/home/user/backup/example.txt')
    upload('/home/user/backup/example.txt', '/home/user/remote-backup/example.txt')

schedule.every(1).hours.do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

示例二:备份 MySQL 数据库并上传到远程主机

假设我们要备份一个名为 example 的 MySQL 数据库,并将备份文件上传到远程主机。可以使用以下代码:

import shutil
import paramiko
import subprocess

def backup(db_name, dest_file):
    cmd = 'mysqldump --single-transaction {} > {}'.format(db_name, dest_file)
    subprocess.check_call(cmd, shell=True)

def upload(file_path, remote_path):
    hostname = 'example.com'
    port = 22
    username = 'your-username'
    password = 'your-password'

    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(hostname, port, username, password)

    sftp = ssh.open_sftp()
    sftp.put(file_path, remote_path)

    sftp.close()
    ssh.close()

def job():
    backup('example', '/home/user/backup/example.sql')
    upload('/home/user/backup/example.sql', '/home/user/remote-backup/example.sql')

schedule.every(1).hours.do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

这个脚本会定时备份 MySQL 数据库,并将备份文件上传到远程主机。注意要提前在远程主机上安装好 MySQL 服务器。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python实现定时自动备份文件到其他主机的实例代码 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法

    请参考以下攻略: Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法 步骤一:安装依赖包 pip install mysql-connector-python pandas mysql-connector-python:用于连接MySQL数据库 pandas:用于处理数据和生成csv文件 步骤二:连接MySQL数据库 import my…

    python 2023年5月20日
    00
  • Python中返回字典键的值的values()方法使用

    Python中,字典是一种非常常用的数据类型,它可以用来存储键值对,而访问键和值是字典操作的两个核心方式。本文将详细讲解 Python 中返回字典键的值的 values() 方法的使用,包括方法的基本语法、返回值的类型及使用案例。 方法语法 在 Python 中,values() 是字典对象的一个方法,用于返回字典中所有值组成的一个列表。该方法的基本语法如下…

    python 2023年5月13日
    00
  • python+selenium的web自动化上传操作的实现

    下面就是关于Python+Selenium的Web自动化上传操作实现的攻略。 1. 前置条件 要实现Web自动化上传操作,首先需要安装和配置好Python与Selenium,并且需要安装好chromedriver的驱动程序。具体安装方法可以参考官方文档。 2. 实现原理 要实现Web自动化上传操作,需要借助Selenium中的send_keys 方法,把需要…

    python 2023年5月19日
    00
  • Django中使用极验Geetest滑动验证码过程解析

    下面是“Django中使用极验Geetest滑动验证码过程解析”的完整攻略。 什么是极验Geetest滑动验证码 极验Geetest滑动验证码是一种可以保障网站安全性的验证机制。通过综合分析用户行为特征,实现对机器人和人机协作攻击的防御。 Django中使用极验Geetest滑动验证码的步骤 1. 获取验证码 使用极验Geetest需要先到极验官网注册账号,…

    python 2023年6月3日
    00
  • Python基于多线程实现抓取数据存入数据库的方法

    在本攻略中,我们将介绍如何使用Python基于多线程实现抓取数据并存入数据库。以下是一个完整攻略,包括两个示例。 步骤1:创建数据库 首先,我们需要创建一个数据库来存储抓取的数据。我们可以使用MySQL数据库,也可以使用其他数据库,如PostgreSQL、SQLite等。 以下是一个示例代码,演示如何使用MySQL数据库创建一个名为“test”的数据库: C…

    python 2023年5月15日
    00
  • 详解Python 计算随机分布的概率

    Python是一种常用的编程语言,可以使用它来计算随机分布的概率。计算随机分布的概率通常要用到Python中的统计库,例如NumPy和SciPy。 下面是计算二项分布的概率的示例代码: import numpy as np import scipy.stats as stats # 设定二项分布的参数 n = 10 # 试验次数 p = 0.5 # 每次试验…

    python-answer 2023年3月25日
    00
  • 利用Python制作简易的核酸检测日历

    下面是详细的攻略: 制作核酸检测日历的完整攻略 1. 确定需求和功能 核酸检测日历需要具备以下功能: 可以自动计算出每个人的检测周期,生成相应的日历。 可以输入多个人的信息,生成对应的多个日历。 日历中需要标注每日的核酸检测状态,方便查看。 2. 确定数据格式 为了方便存储和处理数据,可以采用csv文件格式保存每个人的信息。每行包括姓名、检测周期和最近一次检…

    python 2023年6月3日
    00
  • Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题

    在使用Python3+PyInstall+Sciter进行开发时,有时会遇到缺少dll、html等文件的问题,导致程序无法正常运行。以下是解决Python3+PyInstall+Sciter报错缺少dll、html等文件的完整攻略: 1. 安装Sciter 首先,我们需要安装Sciter。Sciter是一个跨平台的HTML/CSS/ GUI引擎,可以用于构建…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部