scp和rsync的区别

使用 scp 命令传输文件夹到另一台服务器时,通常需要加上 -r 选项,表示递归地复制整个文件夹。

使用 scp命令

scp -r /path/to/local/folder username@remote_host:/path/to/remote/destination
  • -r:递归地传输文件夹及其内容。
  • /path/to/local/folder:本地文件夹的路径。
  • username:远程服务器的用户名。
  • remote_host:远程服务器的IP地址或主机名。
  • /path/to/remote/destination:远程服务器上的目标路径。

示例:

假设你想将本地 /home/user/myfolder 文件夹传输到远程服务器 192.168.1.100 的 /home/remote_user/ 目录中,命令如下:

scp -r /home/user/myfolder remote_user@192.168.1.100:/home/remote_user/

此命令会将 myfolder 文件夹及其所有内容从本地复制到远程服务器指定目录中。

注意:

  • 如果远程路径没有指定文件夹,scp 会将文件夹复制到目标路径下。
  • 如果需要使用 SSH 密钥进行身份验证,可以使用 -i 选项指定密钥文件,例如:
    scp -i /path/to/private_key -r /home/user/myfolder remote_user@192.168.1.100:/home/remote_user/
    

如果当ssh意外中断 这个传输进程会被打断吗?

是的,使用 scp 命令时,如果 SSH 连接中断(比如网络不稳定、服务器关闭等原因),文件传输进程会被中断,导致传输失败或者文件未完全传输。

为了避免这种情况,你可以使用一些更加稳定、支持断点续传的工具,比如 rsync,它能在连接断开时自动恢复传输。

使用 rsync 进行传输

rsync 具有断点续传功能,可以帮助你在网络中断后从上次中断的位置继续传输文件,而无需从头开始。下面是如何使用 rsync 命令将本地 /vms 文件夹传输到远程服务器的示例:

rsync -avz -e "ssh -p 17275" /vms/ remote_user@192.168.1.100:/home/remote_user/

解释:

  • rsync:文件同步命令,支持断点续传。
  • -a:归档模式,表示保留文件的权限、符号链接等信息。
  • -v:显示详细信息。
  • -z:压缩文件传输,减少网络带宽的使用。
  • -e "ssh -p 17275":指定 SSH 使用的端口(17275)。
  • /vms/:源目录(末尾加 / 表示同步文件夹内容而不是文件夹本身)。
  • remote_user@192.168.1.100:/home/remote_user/:目标服务器和路径。

优势:

  • 断点续传:如果传输中断,rsync 会在恢复连接后从中断的位置继续传输。
  • 增量传输:如果某些文件已经传输过,rsync 只会传输更改过的部分,避免不必要的重复传输。
  • 效率rsync 使用压缩和增量传输,使得大规模文件传输更加高效。

如果你希望进一步提高可靠性:

你还可以结合 rsync 和 nohup 或者 screen 来确保即使 SSH 会话断开,传输任务依然能够继续运行。

例如,使用 nohup 命令:

nohup rsync -avz -e "ssh -p 17275" /vms/ remote_user@192.168.1.100:/home/remote_user/ &

这样,即使你关闭了 SSH 会话,rsync 任务也会继续执行。

当它执行转移完成后会显示什么?

当 rsync 完成文件传输后,它会显示一条概要信息,说明传输的情况。具体的输出内容取决于你是否使用了 -v(详细模式)选项以及传输的文件量。

假设你使用了 -v(详细模式)选项,输出可能如下:

sending incremental file list
./
file1.txt
file2.txt
folder1/
folder1/file3.txt

sent 104 bytes  received 52 bytes  312.00 bytes/sec
total size is 1024  speedup is 6.29

解释:

  • sending incremental file listrsync 正在进行增量同步,即它会根据文件的变化来决定哪些文件需要传输。
  • 文件和目录列表:列出了所有被传输的文件和目录。如果是空目录或文件夹,它们也会被列出。
  • sent 104 bytes received 52 bytes 312.00 bytes/sec:传输过程中,发送和接收的字节数,以及传输速度(字节每秒)。
  • total size is 1024 speedup is 6.29:文件总大小(在传输过程中是压缩过后的大小),以及“加速比” (speedup),这是指使用 rsync 比直接传输文件更高效的程度。

如果没有使用 -v 选项,输出会更加简洁:

104 bytes sent
52 bytes received

这仅显示了发送和接收的字节数。

如果有错误或中断,rsync 也会给出相关信息,例如:

rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.2]

这表示在传输过程中出现了问题,通常是由于网络中断或目标服务器出现故障。如果没有遇到问题,rsync 会正常完成,并显示成功信息。

如果在执行 rsync 时,传输进程因网络中断或其他问题停止了,你可以通过再次执行相同的 rsync 命令来继续未完成的文件传输。由于 rsync 的 增量同步 和 断点续传 特性,它会从上次中断的地方恢复,只会传输未完成的部分,而不是重新传输已经成功传输的文件。

rsync 如何续传

假设你之前的命令是:

rsync -avz -e "ssh -p 17275" /vms/ remote_user@192.168.1.100:/home/remote_user/

如果传输被中断,只需要重新运行相同的命令即可,rsync 会自动检测已传输的文件,并仅继续传输未完成的部分。例如:

rsync -avz -e "ssh -p 17275" /vms/ remote_user@192.168.1.100:/home/remote_user/

关键点:

  • rsync 会通过文件的时间戳、文件大小等信息来判断哪些文件已经被传输,并跳过它们。
  • 只有中断或没有传输完全的文件会被重新传输。

更加稳妥的方式:加上 --inplace 和 --partial 选项

  1. --partial:保留部分已传输的文件,防止在传输中断时丢失已传输的部分。rsync 会保留临时的部分文件,之后它会从中断的位置继续传输,而不会重新开始。
  2. --inplace:直接在目标位置修改文件,而不是创建临时文件。

因此,可以使用以下命令来增加恢复的可靠性:

rsync -avz --partial --inplace -e "ssh -p 17275" /vms/ remote_user@192.168.1.100:/home/remote_user/

说明:

  • --partial:防止在中断时丢失部分传输的文件,保证传输过程更可靠。
  • --inplace:在目标文件中直接更新,而不是在后台创建临时文件,这样能加速恢复。

如果 rsync 已经在执行过程中识别到中断,它会自动尝试从中断的地方继续,并且不会重新传输已完成的部分。如果你曾在断点后中断 rsync,只需要重新执行相同的命令,rsync 就会接着上次的位置开始传输剩余部分。

使用 -P 选项

如果你希望更直观地看到传输进度和续传状态,可以使用 -P 选项。-P 等同于 --partial --progress,它不仅启用了部分传输功能,还会显示进度信息:

rsync -avz -P -e "ssh -p 17275" /vms/ remote_user@192.168.1.100:/home/remote_user/

进度输出:

当你使用 -P 时,rsync 会显示如下的进度信息:

sending incremental file list
./
file1.txt
       3,584,403 100%   12.23MB/s    0:00:01 (xfer#1, to-check=0/2)
file2.txt
       1,234,573 100%    8.45MB/s    0:00:01 (xfer#2, to-check=0/1)
file3.txt
       2,893,759 100%   11.20MB/s    0:00:02 (xfer#3, to-check=0/1)

这样,你可以清晰地看到每个文件的传输进度以及传输速度。

总结:

  • 只需重新执行相同的 rsync 命令,它会继续从中断位置恢复。
  • 使用 --partial 和 --inplace 可以保证部分传输的文件不会丢失。
  • 使用 -P 可以显示进度并帮助你更好地管理续传过程。

通过这些方法,你可以确保即使传输中断,文件也能够可靠地续传,避免重复传输已完成的部分。

溫馨提示:

文章標題:scp和rsync的区别

文章連結:https://www.wuyanshuo.cn/16387.html

更新時間:2024年11月13日

1、本站所有資源均不添加推廣檔案或浮水印,壓縮包內若有廣告檔案和浮水印請勿輕易相信。

2、本站資源均為兩層壓縮,第一層7z(尾碼若為wys,請自行修改為7z)有解壓密碼; 第二層zip或cbz,無解壓密碼,可直接使用漫畫類軟件程式查看; 詳情可參攷解壓教程

3、本站大部分內容均收集於網絡! 若內容侵犯到您的權益,請發送郵件至:admin#wysacg.top我們將第一時間處理! 資源所需價格並非資源售賣價格,是收集、整理、編輯詳情以及本站運營的適當補貼,並且本站不提供任何免費技術支援。 所有資源僅限於參攷和學習,版權歸原作者所有!

给TA打赏
共{{data.count}}人
人已打赏
服务运维

Centos系统 virsh虚拟机打包转移到Ubuntu22.04系统的服务器上

2024-11-13 17:41:45

服务运维

Ubuntu22.04 重启网卡 报错“ ovsdb-server.service is not running.”

2024-11-19 11:03:20

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索