CC BY 4.0 (除特别声明或转载文章外)
如果这篇博客帮助到你,可以请我喝一杯咖啡~
一、本地下载工具 Start-BitsTransfer
有时候下载的文件太大,而服务器速度太慢,可选择本地挂梯加速,由于网页下载很容易中断,可用Start-BitsTransfer
Start-BitsTransfer
是 PowerShell 中用于传输文件的命令,特别适用于大文件或长时间运行的下载/上传任务。它是 Windows 操作系统中的一部分,基于 BITS (Background Intelligent Transfer Service),这种技术特别适合处理大规模文件传输,并且能够在不占用系统资源的情况下处理文件下载或上传。
主要特点:
- 断点续传:
Start-BitsTransfer
支持在网络中断后自动恢复下载。即使文件传输过程中断,也可以从中断处继续下载。 - 后台传输:文件传输是通过后台处理的,这意味着它不会占用系统前台应用程序的资源,可以进行长时间的下载任务。
- 节省带宽:BITS 会根据网络的空闲带宽自动调整传输速率,这样它不会干扰其他应用的网络活动。
- 自动重试机制:在遇到网络问题时,BITS 会自动尝试重新连接并继续传输。
- 适用于上传和下载:除了下载,
Start-BitsTransfer
也支持文件上传到服务器。
用法:
Start-BitsTransfer
主要有两个用途:下载和上传文件。
1. 下载文件:
使用 -Source
参数指定文件的URL,-Destination
参数指定文件的保存路径。
Start-BitsTransfer -Source "https://example.com/path/to/file.zip" -Destination "C:\Users\YourUsername\Downloads\file.zip"
2. 上传文件:
使用 -Source
参数指定本地文件路径,-Destination
参数指定远程服务器的目标路径。
Start-BitsTransfer -Source "C:\Users\YourUsername\Documents\file.zip" -Destination "ftp://example.com/upload/file.zip"
3. 传输多个文件:
可以通过 -Source
参数指定一个文件列表。
Start-BitsTransfer -Source "C:\file1.zip","C:\file2.zip" -Destination "C:\Backup\"
4. 设置传输优先级:
使用 -Priority
参数来设置任务的优先级,可能的值包括 Low
、Normal
、High
、Foreground
。默认是 Normal
。
Start-BitsTransfer -Source "https://example.com/file.zip" -Destination "C:\file.zip" -Priority High
5. 使用代理服务器:
如果你需要使用代理服务器来下载文件,可以使用 -Proxy
和 -ProxyCredential
参数来设置代理服务器信息。
Start-BitsTransfer -Source "https://example.com/file.zip" -Destination "C:\file.zip" -Proxy "http://proxyserver:8080" -ProxyCredential (Get-Credential)
常见错误和问题:
- 权限问题:确保你有足够的权限来运行文件传输操作,尤其是上传任务可能需要管理员权限。
- 网络中断:虽然 BITS 会自动尝试重新连接,但如果网络断开过于频繁,可能会导致传输失败,或者需要长时间的等待来恢复。
结束传输:
Start-BitsTransfer
会在后台运行,直到任务完成。如果你需要监控传输进度,可以使用 Get-BitsTransfer
来查看当前的任务状态。
例如,查看传输任务的状态:
Get-BitsTransfer
取消正在进行的文件传输任务:
Remove-BitsTransfer -AllUsers
示例:
-
下载大文件并使用断点续传: 如果你正在下载一个大文件,并且希望在下载中断时可以恢复,你可以使用如下命令:
Start-BitsTransfer -Source "https://downloads.pacbcloud.com/file.zip" -Destination "F:\data\file.zip"
如果下载过程中断,PowerShell 会自动恢复下载。
-
同时下载多个文件: 你也可以一次性下载多个文件:
Start-BitsTransfer -Source "https://example.com/file1.zip", "https://example.com/file2.zip" -Destination "F:\downloads"
-
上传文件到服务器: 上传本地文件到远程服务器的命令:
Start-BitsTransfer -Source "C:\local\file.zip" -Destination "ftp://example.com/upload/"
总结:
Start-BitsTransfer
是一个非常强大的文件传输工具,特别适合需要长时间下载或上传大文件的场景。它提供了断点续传、带宽自动调节、后台传输等功能,能够有效避免下载过程中的网络中断问题,并且可以节省带宽资源。
二、本地下载工具curl
curl
是一个强大的命令行工具,用于从命令行发送 HTTP 请求或下载文件。以下是它的简洁介绍:
功能特点
- 支持多种协议:HTTP(S)、FTP、SFTP、Gopher、SMTP、IMAP 等。
- 文件下载:从网络中下载文件。
- 文件上传:支持文件上传到服务器。
- 发送数据:支持
POST
和PUT
请求,用于接口测试或数据提交。 - 灵活选项:支持添加自定义 Header、认证、代理等。
常见命令
1. 下载文件
curl -o output_file_name "https://example.com/file"
2. 显示实时下载进度
curl --progress-bar -o output_file_name "https://example.com/file"
3. 发送 POST
请求
curl -X POST -d "key=value" "https://example.com/api"
4. 带认证访问
curl -u username:password "https://example.com/secure"
5. 通过代理下载
curl -x http://proxy_host:port -o output_file_name "https://example.com/file"
三、本地大文件上传到服务器(中间有跳转)
1. scp传输工具:
scp -o ProxyJump=jumpuser@jump.example.com localfile.txt targetuser@target.example.com:/remote/path/
跳板机的用户名是 jumpuser
,地址是 jump.example.com
目标服务器的用户名是 targetuser
,地址是 target.example.com
你需要上传的本地文件是 localfile.txt
,上传路径是 /remote/path/
2.文件同步和传输工具rsync
大文件传输如果中断,那就努力白费,得再来一遍了,而rsync
是一种非常流行的文件同步和传输工具,广泛用于 Linux、Unix 系统,以及在 Windows 上通过一些环境(如 WSL、Cygwin 或 Git Bash)来使用。它用于高效地将文件从一个地方复制到另一个地方,尤其适用于远程服务器之间的文件同步。rsync
的优点在于它可以非常高效地同步大文件或大量文件,只传输有变动的部分,而不是重新传输整个文件。
在 Windows 上使用 rsync
,需要先安装并配置它。rsync
不是 Windows 默认的命令,所以你会看到这个错误提示。你可以通过以下方法来安装 rsync
。
1. 使用 WSL(Windows Subsystem for Linux)安装 rsync
Windows 10 和 11 提供了一个名为 Windows Subsystem for Linux (WSL) 的功能,允许你在 Windows 上运行 Linux 环境。你可以通过 WSL 安装和使用 rsync
。
安装 WSL 和 Linux 子系统:
-
打开 PowerShell 或命令提示符(以管理员身份运行)。
-
输入以下命令启用 WSL 功能:
wsl --install
或者,如果你已经安装了 WSL,请确保你使用的是 WSL 2:
wsl --set-default-version 2
-
安装完 WSL 后,选择你喜欢的 Linux 发行版(例如 Ubuntu),并从 Microsoft Store 中安装。
安装 rsync:
-
启动 WSL 环境,输入以下命令安装
rsync
:wsl sudo apt update sudo apt install rsync
-
完成后,你可以在 WSL 中使用
rsync
来进行文件传输。
2. linux上安装 rsync
rsync
通常在大多数 Linux 发行版中默认安装。如果没有安装,可以通过包管理器安装:
bash复制代码sudo apt install rsync # 对于 Debian/Ubuntu
sudo yum install rsync # 对于 CentOS/RHEL
3. 通过 rsync
上传/下载文件:
假设你已经安装了 rsync
,并且服务器有 rsync
服务,或者你有 SSH 访问权限,可以使用以下命令从远程服务器下载文件:
rsync -avz -e "ssh -J username@192.168.xx.xx" /path/to/local/directory username@192.168.xx.xx:/path/to/remote/file
参数说明:
-avz
: 这三个选项一起使用,-a
是归档模式(保留文件权限、时间戳等),-v
是详细模式(显示文件传输的进度),-z
启用压缩。-e "ssh -J username@192.168.xx.xx"
: 使用 SSH 并指定跳板机(ProxyJump)。/path/to/local/directory
: 这是你要上传的文件路径。username@192.168.xx.xx:/path/to/remote/file
: 这是你要保存的路径。- 如果要下载,上面两个文件路径反过来就行了
3.1 断点续传:
如果下载过程中断开,rsync
会继续从上次中断的地方开始下载,不会重新下载已传输的部分。
示例:
rsync -avz -e "ssh -J username@192.168.xx.xx" /path/to/local/directory username@192.168.xx.xx:/path/to/remote/file
这样,rsync
会下载文件并将其保存到本地 /home/user/data/
目录下。如果下载中断,重新运行命令时,rsync
会跳过已下载的部分,继续从中断的地方开始。
3.2. 进一步的加速和优化:
- 如果你有带宽限制,
rsync
可以通过压缩 (-z
选项) 提高传输速度。 - 使用
--progress
选项可以显示文件的传输进度。
rsync -avz --progress -e "ssh -J username@192.168.xx.xx" /path/to/local/directory username@192.168.xx.xx:/path/to/remote/file
这样就可以使用 rsync
来高效、安全地下载文件并支持断点续传。