V2.5版本更新:
结合大家的需求,对软件进行了功能更新,下面是更新明细:
1、 增加功能:支持双向备份,可上传或下载
2、 增加功能:支持定时备份,最小为60秒,默认为1小时
3、 增加功能:增加端口号,默认22,支持修改
4、 增加功能:支持备份文件夹功能,当备份文件夹功能时,注意远程服务器的路径填写正确,以“\”结尾。比如以下格式:\backup\media\
5、 增加功能:本地路径支持手动选择,避免填写错误
6、 功能优化:为了安全考虑,密码只能手动输入,不支持复制
7、 UI优化:优化界面布局,使看起来更合理。
当前版本已知BUG(下次修复):
1、 任务传输过程中,点击取消传输按钮有可能会意外无响应
2、 传输文件夹时,进度条显示不正确
下载地址: https://pan.baidu.com/s/1vf4UuqRHyShmDaIGjiq5aQ?pwd=eqh5 提取码: eqh5
过年期间,闲着无聊做了一个远程服务器文件备份一键备份工具,理论上支持SSH登录的服务器都可以使用,有需要的小伙伴可下载试用。
新手小白,欢迎各位提出宝贵意见。
希望能和各位技术大佬一起学习进步!
部分代码展示:
import tkinter as tk
from tkinter import ttk, messagebox
import paramiko
from scp import SCPClient
import time
import threading
class SCPTransferApp:
def init(self, root):
self.root = root
self.root.title("SCP文件传输工具(从远程到本地)By:小栗")
# 初始化传输相关变量
self.start_time = None
self.last_update_time = None
self.last_bytes = 0
self.total_size = 0
self.transferred_size = 0
self.stop_transfer = False
self.ssh = None
self.scp = None
self.transfer_thread = None
# 控件布局
self.create_widgets()
def create_widgets(self):
# 本地路径
tk.Label(self.root, text="本地路径:").grid(row=0, column=0, padx=10, pady=5)
self.local_path = tk.Entry(self.root, width=50)
self.local_path.grid(row=0, column=1, padx=10, pady=5)
# 远程主机
tk.Label(self.root, text="远程主机:").grid(row=1, column=0, padx=10, pady=5)
self.remote_host = tk.Entry(self.root, width=50)
self.remote_host.grid(row=1, column=1, padx=10, pady=5)
# 远程用户
tk.Label(self.root, text="远程用户:").grid(row=2, column=0, padx=10, pady=5)
self.remote_user = tk.Entry(self.root, width=50)
self.remote_user.grid(row=2, column=1, padx=10, pady=5)
# 远程密码
tk.Label(self.root, text="远程密码:").grid(row=3, column=0, padx=10, pady=5)
self.remote_password = tk.Entry(self.root, width=50, show="*")
self.remote_password.grid(row=3, column=1, padx=10, pady=5)
# 远程路径
tk.Label(self.root, text="远程路径:").grid(row=4, column=0, padx=10, pady=5)
self.remote_path = tk.Entry(self.root, width=50)
self.remote_path.grid(row=4, column=1, padx=10, pady=5)
# 进度条
self.progress = ttk.Progressbar(self.root, orient="horizontal", length=400, mode='determinate')
self.progress.grid(row=5, column=0, columnspan=2, pady=5)
# 传输信息显示
self.transferred_label = tk.Label(self.root, text="已传输: 0 B / 0 B")
self.transferred_label.grid(row=6, column=0, columnspan=2)
self.speed_label = tk.Label(self.root, text="速度: 0 B/s")
self.speed_label.grid(row=7, column=0, columnspan=2)
self.time_label = tk.Label(self.root, text="剩余时间: --")
self.time_label.grid(row=8, column=0, columnspan=2)
# 按钮框架
button_frame = tk.Frame(self.root)
button_frame.grid(row=9, column=0, columnspan=2, pady=10)
# 传输按钮
self.transfer_button = tk.Button(button_frame, text="下载文件", command=self.start_transfer)
self.transfer_button.pack(side=tk.LEFT, padx=10)
# 取消按钮
self.cancel_button = tk.Button(button_frame, text="取消传输", command=self.cancel_transfer, state=tk.DISABLED)
self.cancel_button.pack(side=tk.LEFT, padx=10)
# 清空按钮
self.clear_button = tk.Button(button_frame, text="清空信息", command=self.clear_fields)
self.clear_button.pack(side=tk.LEFT, padx=10)
下载地址: https://pan.baidu.com/s/1xbI2VZUURSec7K_uv2bg8Q?pwd=6nc2 提取码: 6nc2