在windows上使用python编写一个能定时同步文件和文件夹至多台linux机器的脚本
时间: 2024-02-06 17:11:32 浏览: 152
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
可以使用Python的paramiko库实现在Windows上与Linux机器之间的文件传输。具体步骤如下:
1. 安装paramiko库
可以使用pip命令安装paramiko库,命令为:
```
pip install paramiko
```
2. 编写脚本
在Windows上编写一个Python脚本,使用paramiko库连接到Linux机器,然后执行文件同步命令。
以下是示例代码:
```python
import os
import paramiko
import time
# 定义本地和远程目录
local_path = '/path/to/local/dir'
remote_path = '/path/to/remote/dir'
# 定义Linux机器的IP地址和登录信息
ip = '192.168.1.100'
username = 'username'
password = 'password'
# 创建SSH客户端
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(ip, username=username, password=password)
# 定义同步函数
def sync_files():
# 获取本地目录下的文件列表
files = os.listdir(local_path)
# 遍历本地文件列表,将文件同步到远程目录
for file in files:
local_file_path = os.path.join(local_path, file)
remote_file_path = os.path.join(remote_path, file)
# 判断是否为目录,如果是则递归同步
if os.path.isdir(local_file_path):
# 创建远程目录
stdin, stdout, stderr = client.exec_command('mkdir -p ' + remote_file_path)
stderr_lines = stderr.readlines()
if len(stderr_lines) > 0:
print(stderr_lines)
# 递归同步子目录
sync_files(local_file_path, remote_file_path)
else:
# 同步文件
sftp = client.open_sftp()
sftp.put(local_file_path, remote_file_path)
sftp.close()
# 同步文件,每隔5分钟同步一次
while True:
sync_files()
time.sleep(300)
```
上述代码中,定义了本地目录和远程目录的路径,以及Linux机器的IP地址和登录信息。然后通过paramiko库创建SSH客户端,连接到Linux机器。接着定义了一个同步函数,用于将本地目录下的文件同步到远程目录。在while循环中调用同步函数,每隔5分钟同步一次。
3. 运行脚本
在Windows上运行脚本即可实现定时同步文件和文件夹至多台Linux机器。可以使用Windows的计划任务功能,或者使用第三方定时任务软件,如cron等。
阅读全文