方式一:wget 传输
目标
用wget将m1机器上面的 test/路径下的数据传输到m2机器指定路径。
操作
一、m1机器上
1.打包文件
进入所需传输文件的目录对文件打包,由于数据很大,这里后台执行。
tar -cvf 压缩后文件.tar.gz 压缩前文件
或
nohup tar -cvf testfile.tar.gz test/ &
2.开端口
在当前路径下执行以下命令,端口号用没有被占用的,我用33445
1 ) python -m SimpleHTTPSer2 ) python -m http.server 端口号 # python3
执行后显示:
Serving HTTP on 0.0.0.0 port 33445 ...
二、m2机器上
1.开始传输
1) sudo wget -bc --limit-rate=6M m1机器ip:端口号/压缩文件.tar.gz
2) sudo wget -bc --limit-rate=6M 0.0.0.0:33445/testfile.tar.gz
参数说明:
-b 后台执行
-c 断点续传
–limit-rate=6M 限速6M
查看ip:ip addr
2.查看
默认将日志写入wget-log
tailf wget-log
3.解压
下载完成后解压文件
tar -xvf testfile.tar.gz
方式二:nc传输
接收端:nc -l 端口号 > 文件名.zip (监听一个端口,把接收数据重定向(或者说保存)到文件)
发送端:nc 接收端ip 接收端端口号
如果没有反应,可以测一下端口是不是通的,命令是:
telnet ip 端口号
注意:
服务端先起服务,客户端再使用服务.
端口8889,可以自己改为其他的.如果用的阿里云服务器神马的,确保这个端口加了安全组规则,可供访问
方式三:scp命令
scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。scp可以通过ssh传输也可以通过ftp传输。
scp的语法其实很简单,主要注意里面的“@”与“:”。
第一部分:scp -r :如果传输是文件夹需要加-r,传输单个文件可以不加;
第二部分:要上传的文件或者文件夹;
第三部分:另一台设备的用户名和IP地址,用@符号连接;
第四部分:冒号“:”,另一台设别上存储文件的路径。
等待验证,第一次会问是否继续连接,输入yes即可。然后输入密码即可开始上传数据。
数据下载也是同样的步骤,只需要将路径替换一下顺序即可。
注意最后面的传输到本地的路径,一个点,表示数据存储在当前目录下。
SCP的选项参数
scp的选项参数不多,主要使用的就是-r。
-1:强制scp命令使用协议ssh1
-2:强制scp命令使用协议ssh2
-4:强制scp命令只使用IPv4寻址
-6:强制scp命令只使用IPv6寻址
-B:使用批处理模式(传输过程中不询问传输口令或短语)
-C:允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p:保留原文件的修改时间,访问时间和访问权限。
-q:不显示传输进度条。
-r:递归复制整个目录。
-v:详细方式显示输出。
-c cipher:以cipher将数据传输进行加密,这个选项将直接传递给ssh。
-F ssh_config:指定一个替代的ssh配置文件,此参数直接传递给ssh。
-i identity_file:从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-l limit:限定用户所能使用的带宽,以Kbit/s为单位。
-o ssh_option:如果习惯于使用ssh_config(5)中的参数传递方式,
-P port:注意是大写的P, port是指定数据传输用到的端口号
-S program:指定加密传输时所使用的程序。
方式四:rsync 同步文件或目录 从主机拉数据
命令:
rsync -avzP --delete root@:
参数详解
-a 参数,相当于-rlptgoD(-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件); -z 传输时压缩; -P 传输进度; -v 传输时的进度等信息; --delete 删除操作 --exclude 忽略文件或目录
示例:
rsync -avzP --delete root@192.168.1.100:/tmp/rtest1 /tmp/
向备机推数据
主机上启动的流程,同步命令:
rsync -avzP --delete root@:
示例:
rsync -avzP --delete /tmp/rtest1 root@192.168.1.101:/tmp/
一台服务器,不同目录之间进行同步
rsync -avzP --delete /tmp/test_gitlab/web-godPen/ /opt/jenkins/rsync_d/ rsync -avzP --delete 新数据目录 旧数据目录 将新数据目录下的数据,同步至旧数据目录下,实现两个目录之间相同内容。(包括在新数据目录下,文件内容的增删改查及目录的增删改查)
注:如果不加--delete,只会同步增加的内容,新目录中删除的内容,并不会同步到旧目录中。
忽略某个目录(忽略旧数据中某个目录或文件不进行同步)
使用Rsync同步的时候往往会要求对某个文件夹或者文件进行忽略,客户端可以使用--exclude参数来实现对目录或者文件的忽略
注:必须是忽略在前,删除在后,否则没有意义!!!
rsync -avzP --exclude "cc" --delete /tmp/test_gitlab/web-godPen/ /opt/jenkins/rsync_d/
--exclude=a.txt
rsync -rltvz --port=873 --exclude-from=exclude.txt --progress --delete web@192.168.1.1::web /cygdrive/D/web/
a.txt 文件格式如下
Log
abc.txt
.git
.lock