断点续传 scp rsync

本文介绍SCP命令用于远程文件传输及RSYNC命令实现断点续传的方法。涵盖SCP的基本用法、参数说明及实例演示,同时提供RSYNC的详细配置与使用技巧,包括限速、压缩、后台执行等内容。

一、使用scp命令传输

远程文件下载,下载服务器52.37.138.25上的abc.sql文件

 

scp  -r  root@52.37.138.25:/data/abc.sql /mydata/

远程文件上传,把本地服务器的abc.sql 文件上传至服务器192.168.6.25

 

scp -p 8833 /data/abc.sql  root@192.168.6.25:/mydata/

二、使用rsync断点续传

 

rsync -P --rsh='ssh -p 8833' /data/abc.sql root@192.168.6.25:/mydata/

为防止putty工具再次中断,把命令放入后台执行,如下

 


 
  1. ctrl+Z暂停执行

  2.  
  3. jobs:查看当前运行的程序

  4.  
  5. bg %1:设置程序后台执行

  6.  
  7. fg %1:设置程序前台执行

 

三、中断了的putty任务快速恢复方法:

使用screen命令可解决这个问题

 

screen是linux下的一种多重视窗管理程序。在使用telnet或SSH远程登录linux时,如果连接非正常中断,重新连接时,系统将开一个新的session,无法恢复原来的session,而screen命令可以解决这个问题。

-d<作业名称>  将指定的screen作业离线。

-h<行数>  指定视窗的缓冲区行数。

-m  即使当前已在作业中的screen作业,仍强制建立新的screen作业。

-r<作业名称>  恢复离线的screen作业。

-R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。

-s<shell>  指定建立新视窗时,所要执行的shell。

-S<作业名称>  指定screen作业的名称。

-v  显示版本信息。

-x  恢复之前离线的screen作业。

-ls或--list  显示当前所有的screen作业。

 

四、使用screen

screen -S myjobs

会弹出一个新的会话框,输入您想要输入的耗费时间的命令,然后测试一下网络中断

screen -r myjobs(恢复)

然后就可以看到命令执行的进度了。而且,在你断网的这一段时间里,服务器端的命令一直在运行着。

 

 

*********************************************************************

# scp 拷贝本地文件filename  到远程机器 192.168.188.188 服务器的/data/tmp目录下 
   scp -P 61204 -l 40000 filename username@192.168.188.188:/data/tmp/

 -P port   
             Specifies the port to connect to on the remote host.  Note that this option is written with a capital ‘P’, because -p is already reserved
             for preserving the times and modes of the file in rcp(1).
#-P指定远程服务器ssh服务的端口  如:ssh端口为61204

 -l limit
             Limits the used bandwidth, specified in Kbit/s.
-l 指定拷贝的速度限制 单位是ct/s   如:-l 40000 表示40000Kbit/s=40000/8KB=5MB的速度

注:scp不支持断点续传

rsync + ssh 断点续传
#rsync同步本地文件 filename  到远程机器 192.168.188.188 服务器的/data/tmp目录下
rsync -avzP -e 'ssh -p 61204' --bwlimit=5000 filename username@10.20.90.101:/data/tmp/ >> scp_to_101.log 
-a:以archive模式操作,复制目录、符号连接,等价于 -rlptgoD 。
-v:详细提示 
-z:压缩
-P:是综合了--partial --progress两个参数
    --partial
    如果在拷贝文件的过程中,传输被中断,rsync的默认操作是撤消前操作,即从目标机上删除已拷贝的部分文件。
    如果想在下次拷贝时续传文件,不需要重新拷贝所有文件的话,可以使用-partial选项阻止rsync在传输中断时删除已拷贝的部分
    --progress 显示进度条
-e:参数的作用是可以使用户自由选择欲使用的shell程序来连接远端服务器
     ssh -p 61204 指定ssh的端口(非默认22)61204
--bwlimit: --bwlimit=5000  限制带宽为5000k Bytes/s =5MB
上例:使用rsync传输本地文件filename到192.168.188.188的/data/tmp目录下  使用压缩归档传输、限速5MB、支持断点续传 使用ssh协议

 

 

****************************************************

------------------
[root@ds2 data]# scp -r root@10.9.204.173:/db/bak/mysql_173_bak20180711 /db/bak/
nohup scp -r /db/bak/mysql_173_bak20180711 root@10.10.99.40:/db/bak/ > /db/bak/nohup.out 2>&1
user:root
passwd:Ghfk17123#
------------------
/db/bak/mysql_173_bak20180711/2018-07-11_18-25-18
#数据库恢复
#  innobackupex --apply-log --use-memory=6G /db/bak/mysql_173_bak20180711/2018-07-11_18-25-18
#  service mysql stop
#  mv /data/mysql  /data/mysql_bak
#  mkdir /data/mysql
#  innobackupex --defaults-file=/etc/my.cnf --move-back /db/bak/mysql_173_bak20180711/2018-07-11_18-25-18
#  chown -R mysql:mysql /data/mysql
#  service mysql start

nohup innobackupex --defaults-file=/etc/my.cnf --move-back /db/bak/mysql_173_bak20180711/2018-07-11_18-25-18 > /db/bak/innobackupex.log 2>&1

nohup scp -r /db/bak/mysql_173_bak20180711 root@10.10.99.40:/db/bak/ > /db/bak/xiazai0720.log 2>&1


scp  -l 20000 -r /db/bak/mysql_173_bak20180711 root@10.10.99.40:/db/bak/

scp  -l 20000 -r /db/bak/mysql_173_bak20180711 root@10.10.99.40:/db/bak/
PW:  P@ssw0rd

rsync -avzP -e 'ssh -p 22' --bwlimit=10000 /db/bak/jibobo root@10.10.99.40:/db/bak/ >> scp_to_40.log
ctrl+z 来中断,
bg命令让它在后台执行
fg命令让它在前台执行
--bwlimit=5000 =5M
rsync -avzP -e 'ssh -p 22' --bwlimit=10000 /db/bak/mysql_173_bak20180711 root@10.10.99.40:/db/bak/ >> scp_to_40.log
PW:  P@ssw0rd
ctrl+z
fg
kill -9 %1
#173
#--备份
#mysql -u root -h 10.9.204.173 -p
#开始备份
innobackupex   --defaults-file=/etc/my.cnf  --user='root' --password=''  --no-timestamp --parallel=4   /db/bak/mysql_bak

#数据库恢复
#  innobackupex --apply-log --use-memory=10G /db/bak/mysql_bak
#  service mysql stop
#  mv /data/mysql  /data/mysql_bak
#  mkdir /data/mysql
#  innobackupex --defaults-file=/etc/my.cnf --copy-back /db/bak/mysql_bak
#  chown -R mysql:mysql /data/mysql
#  service mysql start

scp -r /db/bak/slave_status.txt root@10.10.99.40:/db/bak/

<think> 首先,用户的问题是基于站内引用查找在Ubuntu系统中使用scp实现断点续传的方法。用户明确说:"我想查找在Ubuntu系统中使用scp实现断点续传的方法",并问:"请问Ubuntu系统中scp实现断点续传的方法"。 现在,回顾引用内容: - 引用[1]: 提到rsync的-P选项有断点续传功能,并说上传数据[^1]。它说rsync命令支持断点续传。 - 引用[2]: 提到scp命令用于上传数据,但说如果排除子文件夹,需要使用rsync代替scp。也提到了rsync断点续传选项。 - 引用[3]: 直接给出命令:rsync -avuP -e 'ssh -p 端口号' ... 用于断点续传。 - 引用[4]: 讨论wget的断点续传,但提到scp在上下文中。 关键点:用户提到"scp实现断点续传",但从引用中可以看出,标准scp命令本身似乎不支持断点续传。引用[1]明确指出:"它的-P选项具有断点续传功能",但这里的"它"指的是rsync,而不是scp。引用[1]说:"和常见的scp命令一样,既可以用于上传数据,也可以用于从服务器上获取数据,一般是ubuntu服务器自带的命令。 华点是:它的-P选项具有断点续传功能。" 这里的"它"可能指的是rsync,因为上下文是rsync。 引用[1]: "和常见的scp命令一样,..." 然后说"它的-P选项",但接着是rsync命令的描述。所以,"它"很可能指的是rsync。 引用[2]: 明确指出:"若需要排除某个子文件夹,则需要使用命令代替scp",然后给出了rsync的例子。 引用[3]: 直接使用了rsync。 引用[4]: 主要关于wget。 因此,总结引用:scp本身不支持断点续传,需要使用替代工具如rsync来实现断点续传功能。 用户的问题是:"Ubuntu系统中scp实现断点续传的方法",但基于引用,scp没有内置的断点续传功能。我必须基于引用回答。 系统指令要求:回答中引用的段落末尾自然地添加引用标识;使用中文回答;生成相关问题;结构清晰。 所以,我的回答应该: 1. 解释scp不支持断点续传。 2. 建议使用rsync作为替代。 3. 提供使用rsync实现断点续传的命令示例。 4. 引用相关引用。 从引用中提取命令: - 引用[1]: rsync with -P option for resume. - 引用[2]: rsync -av -e 'ssh -p 22' ... - 引用[3]: rsync -avuP -e 'ssh -p 端口号' ... 引用[2]和[3]都给出了rsync命令。 引用[2]: "rsync -av -e ‘ssh -p 22’ --exclude=subfolder/to/exclude /path/to/source/ user@hostB:/path/to/dest/" 引用[3]: "rsync -avuP -e 'ssh -p 端口号' root@192.168.1.100:/opt/a.tar.gz ./a.tar.gz" 所以,通用命令是:rsync -P or -avuP with ssh for resume. 回答结构: - 先回应问题:scp本身不支持断点续传。 - 然后推荐rsync并给出方法。 - 提供命令示例。 - 结束时生成相关问题。 添加引用标识:在相关句子末尾添加[^1], [^2], 等。 例如: "标准scp命令不直接支持断点续传功能[^1]。但可以使用rsync命令作为替代,它具有-P选项支持断点续传[^1][^2]。 命令示例: rsync -avuP -e 'ssh -p 端口号' 源路径 目标路径 [^3]。 ..." 确保使用中文。 生成相关问题:在最后添加§§相关问题§§部分。 相关问题可以基于内容,如: 1. scprsync的主要区别是什么? 2. 除了rsync,还有其他支持断点续传的命令吗? 3. 如何安装rsync在Ubuntu系统中? 引用来源: - [^1] for general info - [^2] for exclude example - [^3] for direct command - [^4] for wget, but not directly relevant 使用[^1], [^2], [^3] as appropriate. 完整回答框架: 回答用户的问题:Ubuntu系统中使用scp实现断点续传的方法。 解释:scp本身不支持断点续传,推荐使用rsync。 给出rsync命令。 添加引用。 结束相关问题。 </think> ### Ubuntu系统中实现文件传输断点续传的方法 在Ubuntu系统中,标准的`scp`命令本身**不直接支持断点续传功能**[^1]。这是因为`scp`(Secure Copy)是一个简单的基于SSH的文件传输工具,专注于安全性而非中断恢复。不过,您可以使用`rsync`命令作为高效替代方案,它内置了断点续传支持,并且语法类似于`scp`,同时兼容SSH传输[^1][^2][^3]。以下是详细的实现方法: #### 使用rsync实现断点续传 `rsync`通过`-P`选项(或`--partial --progress`的组合)启用断点续传功能。当传输中断时,重新运行相同的命令会从中断点继续传输,而不是重新开始。以下是常见场景的命令示例: 1. **从本地上传文件到远程服务器(支持断点续传)**: ```bash rsync -avuP -e 'ssh -p 端口号' /本地/文件/路径 用户名@服务器IP:/远程/目标/路径 ``` - `-a`:归档模式,保留文件属性。 - `-v`:详细输出,便于调试。 - `-u`:仅更新新文件(可选)。 - `-P`:启用断点续传和进度显示。 - `-e 'ssh -p 端口号'`:指定SSH端口(默认为22时可省略)。 - 示例:将本地`backup.tar`上传到远程服务器的`/home/user/`目录: `rsync -avuP -e 'ssh -p 22' /home/user/backup.tar user@192.168.1.1:/home/user/ [^3]` 2. **从远程服务器下载文件到本地(支持断点续传)**: ```bash rsync -avuP -e 'ssh -p 端口号' 用户名@服务器IP:/远程/文件/路径 /本地/目标/路径 ``` - 示例:下载远程`/opt/a.tar.gz`到本地当前目录: `rsync -avuP -e 'ssh -p 22' root@192.168.1.100:/opt/a.tar.gz ./a.tar.gz [^3]` 3. **额外实用选项**: - **排除特定文件夹**:添加`--exclude=子文件夹名`,例如忽略上传中的`logs`文件夹: `rsync -avuP -e 'ssh -p 22' --exclude=logs /source/ user@host:/dest/ [^2]` - **仅传输变化部分**:`rsync`默认只传输差异内容,提高效率。 - **恢复中断传输**:网络中断后,重新运行原命令即可自动续传。 #### 为什么选择rsync而非scp? - **优点**:`rsync`支持断点续传、增量传输(节省带宽)、文件属性保留,并兼容SSH安全协议[^1][^3]。 - **缺点**:`scp`更简单直观,但不适合大文件或网络不稳定的场景[^1]。如果您必须使用`scp`,可通过分块传输(如`split`命令)间接模拟续传,但这不是原生支持。 #### 注意事项 - **安装rsync**:Ubuntu系统通常预装`rsync`,如果没有,可通过`sudo apt update && sudo apt install rsync`安装。 - **权限要求**:确保您有SSH访问权限(服务器端SSH服务需运行)。 - **替代工具**:对于HTTP/FTP传输,可使用`wget -c`或`curl -C -`支持断点续传(参考引用[^4]),但不适用于SSH场景。 通过以上方法,您可以高效实现Ubuntu系统中的文件断点续传功能。如果您的场景仅限于SSH传输,强烈推荐`rsync`作为首选工具[^1][^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值