两台linux的文件传输

起因

本地拉取docker镜像timeout,然后就准备把阿里云上已经在运行的镜像打包下载下来。

指令1:rsync

rsync 是一个非常强大的工具,用于文件同步和高效的数据传输。它可以用于备份、文件传输以及数据同步等多种场景。
rsync 的主要优点在于其高效性和灵活性,特别是在处理大量文件和远程传输时表现优异。

主要特点

  1. 增量传输rsync 只传输两个文件之间的差异部分,而不是整个文件,从而显著减少了传输时间。
  2. 多平台支持rsync 可以在多种操作系统上运行,包括 Linux、macOS 和 Windows。
  3. 安全传输:通过 SSH 或 SSL/TLS 进行加密传输,保证数据的安全性。
  4. 灵活的选项:支持多种选项来定制传输行为,如保留文件元数据、压缩数据等。
  5. 远程文件同步:可以轻松地在本地计算机和远程服务器之间同步文件。

基本语法

rsync 的基本语法如下:

rsync [options] SOURCE DESTINATION

其中:

  • options:一系列用于控制 rsync 行为的选项。
  • SOURCE:要同步或传输的源文件或目录。
  • DESTINATION:目标文件或目录的位置。

常用选项

基础选项

  • -a(archive):归档模式,保留文件属性(如权限、时间戳、符号链接等)。
  • -v(verbose):详细模式,显示更多输出信息。
  • -z(compress):启用压缩,减少数据传输量。
  • -P(progress):显示进度条,并在传输完成后打印统计数据。
  • -r(recursive):递归复制目录。
  • -u(update):只传输那些源端比目标端新或不存在的文件。

进阶选项

  • -e(program):指定用于远程 shell 的程序,默认为 ssh
  • -H(hard-links):保持硬链接的关联。
  • -L(links):将符号链接作为普通文件传输。
  • -B(block-size):指定块大小,用于提高传输效率。
  • -S(sparse):保留稀疏文件的稀疏性。
  • -I(ignore-errors):忽略错误,继续处理其他文件。
  • -q(quiet):安静模式,减少输出信息。

示例

1. 本地文件同步

将本地目录 source_dir 同步到本地目录 dest_dir

rsync -avz /path/to/source_dir /path/to/dest_dir

2. 从远程服务器拉取文件到本地

将远程服务器上的文件 remote_file 拉取到本地目录 local_dir

rsync -avz user@remote_server:/path/to/remote_file /path/to/local_dir

3. 将本地文件推送到远程服务器

将本地目录 local_dir 推送到远程服务器的 remote_dir

rsync -avz /path/to/local_dir user@remote_server:/path/to/remote_dir

应用场景

数据备份

定期将重要数据备份到另一个存储设备或远程服务器上:

rsync -avz --delete /path/to/data user@backup_server:/path/to/backup_dir

文件同步

实时同步工作目录到远程服务器:

rsync -avz --delete /path/to/workdir user@remote_server:/path/to/remotedir

--delete:该选项表示在同步过程中删除目标端(destination)中不再存在于源端(source)的文件或目录。这有助于保持目标端与源端的一致性。

亲测

将我笔记本上的ollama.tar的包传输到办公室的Pi5上。之前从阿里云服务器上下载下来操作类似,网速也差不多,不过没截图。

指令2 scp

scp(Secure Copy)是一个用于通过 SSH 协议安全地传输文件的工具。它主要用于简单的文件传输任务,特别适合在本地计算机和远程服务器之间传输单个文件或目录。

基本语法

scp 的基本语法如下:

scp [options] source destination

常用选项

  • -r:递归复制目录。
  • -p:保留文件的权限、时间戳等属性。
  • -v:详细模式,显示更多输出信息。
  • -C:启用压缩(默认不压缩)。
  • -P :指定 SSH 端口(默认为 22)。
  • -i <identity_file>:指定私钥文件,用于密钥认证。

常见用法

1. 从本地传输文件到远程服务器

将本地的 file.txt 文件传输到远程服务器的 /home/user/ 目录:

scp -P 22 file.txt user@remote_server:/home/user/

这里的 -P 22 指定使用默认的 SSH 端口 22。

2. 从远程服务器拉取文件到本地

将远程服务器上的 file.txt 文件拉取到本地的当前目录:

scp -P 22 user@remote_server:/home/user/file.txt .

3. 传输目录

将本地的 directory 目录传输到远程服务器的 /home/user/ 目录:

scp -Pr directory user@remote_server:/home/user/

这里的 -Pr 表示递归复制目录。

示例

1. 从本地传输文件到远程服务器

假设你要将本地的 ~/Documents/file.txt 文件传输到远程服务器的 ~/backups 目录:

scp -P 22 ~/Documents/file.txt user@remote_server:~/backups

2. 从远程服务器拉取文件到本地

假设你要将远程服务器上的 ~/data/file.txt 文件拉取到本地的 ~/Downloads 目录:

scp -P 22 user@remote_server:~/data/file.txt ~/Downloads

3. 传输目录

假设你要将本地的 ~/Projects/project 目录传输到远程服务器的 ~/projects 目录:

scp -Pr ~/Projects/project user@remote_server:~/projects

rsync 的区别

虽然 scprsync 都可以用来传输文件,但它们有一些不同之处:

  • 功能复杂度rsync 提供了更丰富的功能,如增量传输、文件同步等。
  • 性能:对于大型文件或目录,rsync 通常更高效,因为它只传输文件的不同部分。
  • 易用性scp 更适合简单的文件传输任务,而 rsync 更适合复杂的同步和备份场景。
posted @ 2024-10-30 09:06  科里布  阅读(23)  评论(0编辑  收藏  举报