FTP下用reget实现断点续传 (FTP下get显示进度)

本文介绍在Linux环境下如何实现文件传输过程中的断点续传。主要针对同事通过FTP下载1.3GB文件时遇到的数据链路断开问题,提出了两种解决方法:一是编写Java网络程序使用REST和RETR命令;二是直接使用Linux下的FTP命令,采用reget代替mget和get。

同事在Linux通过FTP获取一个1.3G的大文件,传了一个上午,结果在1.1G左右的时候,数据链路断开,ftp命令假死状态,文件大小不在增加。如果重新导入,下午肯定完不成了,得考虑断点续传,以前都是通过windows下的工具完成的,目前的问题是:在Unix下如何处理呢?方法如下:
方法一:编写Java网络程序:使用“REST + 本地文件长度”命令+“RETR + 文件名”命令;
方法二:使用Linux下ftp命令,使用reget替代mget和get命令;(get前最好还用上bin和hash命令,表示二进制文件、显示传输进度);
注:没试验过sftp是否也支持。

Xftp 支持断点续传功能,用户可以在网络中断或其他问题导致传输暂停后,继续未完成的传输任务。要启用断点续传功能,需要确保传输模式为二进制模式,并且服务器端支持该功能。在 Xftp 中,可以通过以下方式实现断点续传: ### 上传任务的断点续传 当上传任务中断时,可以使用 `restart` 命令继续传输。首先,使用 `size` 命令查看服务器端已接收文件的大小,然后使用 `restart` 命令设置断点位置,最后再次使用 `put` 命令继续上传文件。例如: ```bash size filename restart 123456 put filename ``` ### 下载任务的断点续传 对于下载任务,Xftp 提供了 `reget` 命令,可以直接从上次中断的位置继续下载,不需要手动设置断点位置。使用 `reget` 命令时,只需提供文件名即可: ```bash reget filename ``` ### 设置传输模式为二进制 为了确保断点续传功能正常工作,需要将传输模式设置为二进制。可以在 Xftp 的会话设置中选择二进制模式,或者在命令行中输入以下命令: ```bash binary ``` ### 启用被动模式 在进行文件传输时,如果客户端位于内网中,建议启用被动模式(PASV),以便服务器能够正确地建立数据通道。可以在 Xftp 的会话设置中启用被动模式,或者在命令行中输入以下命令: ```bash passive ``` ### 示例代码:模拟从日志文件中提取传输任务信息 为了防止任务丢失,可以在关闭 Xftp 前保存任务队列,并在重新启动时恢复任务。以下是一个示例代码,演示如何从日志文件中提取传输任务信息: ```python def parse_xftp_log(log_file_path): tasks = [] with open(log_file_path, 'r') as file: lines = file.readlines() for line in lines: if 'Transfer started' in line: task_info = line.split(' - ') file_name = task_info[1].split(' ')[0] source_path = task_info[2].split(' ')[0] target_path = task_info[3].split(' ')[0] tasks.append({'file_name': file_name, 'source_path': source_path, 'target_path': target_path}) return tasks # 使用示例 log_tasks = parse_xftp_log('xftp_session.log') for task in log_tasks: print(f"File: {task['file_name']}, Source: {task['source_path']}, Target: {task['target_path']}") ``` 通过上述方法,可以确保在 Xftp 中设置断点续传功能,并在网络中断或其他问题后能够继续未完成的传输任务[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值