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

yizhihongxing

下面是 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日

相关文章

  • 在Mac OS系统上安装Python的Pillow库的教程

    下面是在Mac OS系统上安装Python的Pillow库的完整攻略: 步骤一:安装pip Pillow库依赖于pip包管理系统,因此首先需要在Mac OS系统上安装pip。在终端中输入以下命令: sudo easy_install pip 输入您的管理员密码(在系统提示之后),然后等待安装完成。 步骤二:安装Pillow 在终端中输入以下命令: pip i…

    python 2023年6月2日
    00
  • Python中最大递归深度值的探讨

    单独讨论 Python 中最大递归深度的问题不太有意义。对于这个问题需要从 Python 如何处理递归函数开始,以及递归深度和计算机内存容量有何关系等方面来进行探讨。 Python 如何处理递归函数 Python 中的递归函数和其他语言一样,也是直接或间接调用自身。在一个递归函数中,每一次调用该函数都会在内存中产生一个对应的栈帧。一个栈帧包含这个函数的所有局…

    python 2023年6月3日
    00
  • python中的mmap稀疏向量

    【问题标题】:mmap sparse vector in pythonpython中的mmap稀疏向量 【发布时间】:2023-04-07 13:52:01 【问题描述】: 我正在寻找可以映射到内存中的简单稀疏向量实现,类似于numpy.memmap。 不幸的是,numpy 实现只处理全向量。示例用法: vec = SparseVector(‘/tmp/fi…

    Python开发 2023年4月8日
    00
  • 详解Python PIL ImageChops.constant()

    Python PIL库中的ImageChops模块提供了常见的图像处理函数。其中,ImageChops.constant函数允许我们针对输入图像创建一个常量值图像,并返回这个常量值图像。 以下是ImageChops.constant函数的完整攻略: 函数定义 ImageChops.constant(mode, size, color) 参数说明 mode: …

    python-answer 2023年3月25日
    00
  • 如何在Python中插入数据到Microsoft SQL Server数据库?

    以下是如何在Python中插入数据到Microsoft SQL Server数据库的完整使用攻略,包括安装pyodbc库、连接Microsoft SQL Server数据库、插入数据等步骤。同时,提供了两个示例以便更好理解如何在Python中插入数据到Microsoft SQL Server数据库。 步骤1:安装pyodbc库 在Python中,我们可以使用…

    python 2023年5月12日
    00
  • 使用Python操作MySQL的一些基本方法

    使用 Python 操作 MySQL 的主要步骤如下: 安装 MySQL Connector 连接 MySQL 数据库 创建数据库或选择已有数据库 创建表或选择已有表 插入数据 查询数据 更新数据 删除数据 关闭连接 以下是这些步骤的详细讲解: 1. 安装 MySQL Connector 在 Python 中操作 MySQL 数据库需要用到 MySQL Co…

    python 2023年5月20日
    00
  • centos 安装Python3 及对应的pip教程详解

    下面是详细的centos安装Python3及对应的pip教程详解: 准备工作 在安装Python3之前,有必要进行一些准备工作,如更新yum源和安装编译工具。 更新yum源 sudo yum -y update 安装必要的编译工具和库 sudo yum -y groupinstall ‘Development Tools’ sudo yum -y insta…

    python 2023年5月14日
    00
  • 横向对比分析Python解析XML的四种方式

    在Python中,解析XML文件有多种方式。以下是横向对比分析Python解析XML的四种方式的详细攻略: xml.dom.minidom xml.dom.minidom是Python标准库中的一个模块,用于解析XML文件。以下是使用xml.dom.minidom解析XML文件的示例: import xml.dom.minidom dom = xml.dom…

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