scp 限速传输
scp 限速 1M
#scp -l 2000 文件名 账号@远程机器IP
这里2000
是2M
的意思,传输的时候用最大用2M
的带宽,上传速度为2000/8=250k/s
参数
-l limit Limits the used bandwidth, specified in Kbit/s.
rsync 限速及断点传输
限制为 100k Bytes/s
rsync -auvzP --bwlimit=100 本地的文件 远程的文件
rsync -P --rsh=ssh home.tar ip:/home/home.tar
参数说明
v:详细提示 a:以archive模式操作,复制目录、符号连接,等价于 -rlptgoD z:压缩 u:只进行更新,防止本地新文件被重写,注意两者机器的时钟的同时 P:是综合了--partial --progress两个参数,部分传送(断点传输)和显示进度 --bwlimit=KBPS: 限制传输速度,KBytes/s -rsh=ssh: 表示使用ssh协议传送数据
便捷方式
如果不想每次都使用rsync -P rsh=ssh
之类的
alias scpr="rsync -P --rsh=ssh"
简化为
scpr home.tar ip:/home/home.tar
在传输过程中,目标文件会以.home.tar.xxxx文件保存,可以用la -a来显示出来。如果scpr中断了,那么该文件会变成用户指定的目标文件"home.tar",下次传的时候又会改成.home.tar.xxxx文件。
后台运行
rsync -P --rsh=ssh home.tar ip:/home/home.tar
可以用ctrl+z
来中断,再使用bg
命令让它在后台执行。
使用加密的key下载*
rsync -P --rsh="ssh -i key" username@ip:/home/home.tar ./
Specchio*
一个单向文件同步工具
Specchio 是一个单向文件同步工具,同步时的忽略规则遵守.gitignore
。
这个工具主要是为了解决开发环境和测试环境不在同一个机器上的问题。具体情况是,开发是在自己的机器上,而测试程序是在另一台机器上,这样改代码后想直接测试非常麻烦。最早的解决方案是在本机上提交一个commit
,git push
之后,然后在远程机器上git pull
解决的,但是这样会产生很多我不想要的commit
记录。
Specchio 通过监视文件改动,在判断文件是否应被忽略后,然后会进行响应的操作。
Github repo: https://github.com/brickgao/specchio