一些传输文件工具

一、本地下载工具 Start-BitsTransfer

有时候下载的文件太大,而服务器速度太慢,可选择本地挂梯加速,由于网页下载很容易中断,可用Start-BitsTransfer

Start-BitsTransfer 是 PowerShell 中用于传输文件的命令,特别适用于大文件或长时间运行的下载/上传任务。它是 Windows 操作系统中的一部分,基于 BITS (Background Intelligent Transfer Service),这种技术特别适合处理大规模文件传输,并且能够在不占用系统资源的情况下处理文件下载或上传。

主要特点:

  1. 断点续传Start-BitsTransfer 支持在网络中断后自动恢复下载。即使文件传输过程中断,也可以从中断处继续下载。
  2. 后台传输:文件传输是通过后台处理的,这意味着它不会占用系统前台应用程序的资源,可以进行长时间的下载任务。
  3. 节省带宽:BITS 会根据网络的空闲带宽自动调整传输速率,这样它不会干扰其他应用的网络活动。
  4. 自动重试机制:在遇到网络问题时,BITS 会自动尝试重新连接并继续传输。
  5. 适用于上传和下载:除了下载,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 参数来设置任务的优先级,可能的值包括 LowNormalHighForeground。默认是 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)

常见错误和问题:

  1. 权限问题:确保你有足够的权限来运行文件传输操作,尤其是上传任务可能需要管理员权限。
  2. 网络中断:虽然 BITS 会自动尝试重新连接,但如果网络断开过于频繁,可能会导致传输失败,或者需要长时间的等待来恢复。

结束传输:

Start-BitsTransfer 会在后台运行,直到任务完成。如果你需要监控传输进度,可以使用 Get-BitsTransfer 来查看当前的任务状态。

例如,查看传输任务的状态:

Get-BitsTransfer

取消正在进行的文件传输任务:

Remove-BitsTransfer -AllUsers

示例:

  1. 下载大文件并使用断点续传: 如果你正在下载一个大文件,并且希望在下载中断时可以恢复,你可以使用如下命令:

    Start-BitsTransfer -Source "https://downloads.pacbcloud.com/file.zip" -Destination "F:\data\file.zip"
    

    如果下载过程中断,PowerShell 会自动恢复下载。

  2. 同时下载多个文件: 你也可以一次性下载多个文件:

    Start-BitsTransfer -Source "https://example.com/file1.zip", "https://example.com/file2.zip" -Destination "F:\downloads"
    
  3. 上传文件到服务器: 上传本地文件到远程服务器的命令:

    Start-BitsTransfer -Source "C:\local\file.zip" -Destination "ftp://example.com/upload/"
    

总结:

Start-BitsTransfer 是一个非常强大的文件传输工具,特别适合需要长时间下载或上传大文件的场景。它提供了断点续传、带宽自动调节、后台传输等功能,能够有效避免下载过程中的网络中断问题,并且可以节省带宽资源。

二、本地下载工具curl

curl 是一个强大的命令行工具,用于从命令行发送 HTTP 请求或下载文件。以下是它的简洁介绍:

功能特点

  1. 支持多种协议:HTTP(S)、FTP、SFTP、Gopher、SMTP、IMAP 等。
  2. 文件下载:从网络中下载文件。
  3. 文件上传:支持文件上传到服务器。
  4. 发送数据:支持 POSTPUT 请求,用于接口测试或数据提交。
  5. 灵活选项:支持添加自定义 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 子系统:

  1. 打开 PowerShell 或命令提示符(以管理员身份运行)。

  2. 输入以下命令启用 WSL 功能:

    wsl --install
    

    或者,如果你已经安装了 WSL,请确保你使用的是 WSL 2:

    wsl --set-default-version 2
    
  3. 安装完 WSL 后,选择你喜欢的 Linux 发行版(例如 Ubuntu),并从 Microsoft Store 中安装。

安装 rsync:

  1. 启动 WSL 环境,输入以下命令安装 rsync

    wsl
    sudo apt update
    sudo apt install rsync
    
  2. 完成后,你可以在 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 来高效、安全地下载文件并支持断点续传。