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 消费 kafka 数据教程

    下面我将为您讲解“Python消费Kafka数据教程”的完整攻略。 1. 安装依赖 在Python中消费Kafka数据需要使用kafka-python库,所以我们需要先安装该依赖,可以通过以下命令安装: pip install kafka-python 2. 编写消费者代码 首先,我们需要指定Kafka集群的IP及端口,以及指定要消费的topic名称。示例代…

    python 2023年5月19日
    00
  • 如何在Python中执行PostgreSQL数据库的查询语句?

    在Python中,我们可以使用psycopg2库执行PostgreSQL数据库的查询语句。以下是如何在Python中执行PostgreSQL数据库的查询语句的完整使用攻略,包括连接数据库、执行查询语句、获取查询结果等步骤。同时,提供了两个示例以便更好理解如何在Python中执行PostgreSQL数据库的查询语句。 步骤1:安装psycopg2库 在Pyth…

    python 2023年5月12日
    00
  • Python技巧之变长和定长序列拆分

    Python技巧之变长和定长序列拆分 在Python中,我们经常需要对列表、元组等序列类型进行拆分,这在数据处理和算法实现中是非常常见的操作。而序列拆分有两种情况,一种是按照固定长度进行拆分,另一种是按照不固定长度进行拆分。下面我将详细讲解这两种情况的处理方法。 按照固定长度进行拆分 在Python中,我们可以使用切片的方式来对序列进行拆分。当需要按照固定的…

    python 2023年5月14日
    00
  • python实现linux服务器批量修改密码并生成execl

    对于“python实现linux服务器批量修改密码并生成excel”的攻略,我可以列出以下步骤: 1. 安装必要的Python模块 在使用Python实现linux服务器批量修改密码并生成excel的过程中,需要使用到paramiko模块和openpyxl模块,因此需要先安装这两个模块。在终端中输入以下命令进行安装: pip install paramiko…

    python 2023年6月2日
    00
  • python 获取utc时间转化为本地时间的方法

    获取 UTC 时间并转换成本地时间是 Python 中经常需要的操作,可以使用 datetime 模块中的方法来实现。 首先需要导入相关的模块: import datetime import pytz # 需要安装 pytz。 接下来,获取当前 UTC 时间,可以使用 datetime.datetime.utcnow() 方法: utc_time = dat…

    python 2023年6月2日
    00
  • Python爬取某平台短视频的方法

    Python爬取某平台短视频的方法 爬取短视频需要用到爬虫技术,Python提供了强大的爬虫库requests和网页解析库BeautifulSoup,还有Selenium WebDriver等库,可以实现获取网页源代码、解析网页、模拟浏览器行为等操作。下面将介绍爬取某平台短视频的方法: 步骤一:分析网页 在使用Python爬取某平台短视频时,我们首先需要分析…

    python 2023年5月14日
    00
  • Python整型运算之布尔型、标准整型、长整型操作示例

    Python整型运算之布尔型、标准整型、长整型操作示例 Python是一种强类型语言,支持多种数据类型,包括布尔型、标准整型和长整型。在本文中,我们将详细讲解Python中整型数据类型的操作示例,包括类型转换、算术运算、比较运算和逻辑运算等。 布尔型操作示例 布尔型是一种简单的整型数据类型,只有两个值:True和False。在Python中,我们可以使用bo…

    python 2023年5月14日
    00
  • python函数与方法的区别总结

    当我们使用 Python 编程时,常常会听到函数和方法这两个概念。虽然函数和方法都可以用于封装和复用代码,但它们之间还是存在一些区别的。 函数与方法的定义 在 Python 中,函数(function)是指独立的代码块,没有与之关联的对象。通常函数通过参数和返回值来接收和返回数据。 而方法(method)是指与对象相关联的函数。一个方法是在一个对象的上下文中…

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