文章来源: 陶老师运维笔记- 微信公众号html
本文介绍rsync,scp,wget,curl,nc,ftp,lrzsz等工具使用,尤为是在文件传输方面的应用。 主要内容来自于www.ibm.com/developerwo… 表示感谢。 mysql
rsync 是一款高效的远程数据备份和镜像工具,可快速地同步多台主机间的文件。官网: rsync.samba.org/linux
Rsync服务搭建: CentOS7 FTP及Rsync服务搭建sql
$man rsync
rsync [OPTION]... SRC DEST
rsync [OPTION]... SRC [USER@][host]:DEST
rsync [OPTION]... [USER@]HOST:SRC DEST
rsync [OPTION]... [USER@]HOST::SRC DEST
rsync [OPTION]... SRC [USER@]HOST::DEST
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
$rsync -avzP data1user@192.168.1.2::data1 ~/data1
保持传输原有文件权限,用户,用户组,时间,递归的把data1模块数据复制到用户家目录的data1目录里.
参数 a的意思就是 保留文件原有权限,用户,用户组,时间且递归的copy包括连接文件。
$rsync --compress --recursive --times --perms --owner --group --links --exclude=smarty/templates_c/ --timeout=30 [path] [user]@[ip]:[path]
复制代码
参数说明:windows
选项 | 描述 |
---|---|
-a, --archive | 归档模式,保持全部文件属性,等同于 -rlptgoD |
-v, --verbose | 详细信息输出 |
-r, --recursive | 对子目录进行递归处理 |
-R, --relative | 使用相对路径信息 |
-b, --backup | 建立备份 |
-z, --compress | 对备份的文件在传输时进行压缩处理 |
--delete | 用于同步目录,从 DEST 中将 SRC 不存在的文件进行删除 |
--progress | 显示备份过程 |
#设置密码:
$export RSYNC_PASSWORD=ops123456;
#限速
$rsync macdown071.zip ops@rsync.tao-ops.com::software/ --bwlimit=50000 -arv
$rsync --password-file=/etc/rsyncd.secrets.passfile ops@ip::software . --bwlimit=50000 -arv
#备份
$rsync -avzP data1user@192.168.1.2::data1 ~/data1
保持传输原有文件权限,用户,用户组,时间,递归的把data1模块数据复制到用户家的data1目录里。
#删除--delete
rsync -avzP --delete data1user@192.168.1.2::data1 ~/data1
#保持data1模块和用户家目录模块内容彻底一致,加上参数 --delete,这样会删除在~/data1目录里可是不在data1
复制代码
scp 命令在网络上的主机之间拷贝文件,它是安全拷贝(secure copy)的缩写。 scp 命令使用 ssh 来传输数据,并使用与 ssh 相同的认证模式,提供一样的安全保障。浏览器
$man scp
$scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 [...] [[user@]host2:]file2
复制代码
#示例:
$scp ops@rsync.tao-ops.com:/home/ops/foo.txt ~/Downloads/
$scp -r -P 4588 ops@rsync.tao-ops.com:/tmp/foo.txt /root/
Copy 本地文件 /etc/eva.log, 到远程机器 sysB, 用户 user 的家目录下
$scp /etc/eva.log user@sysB:/home/user
copy 远程机器 sysB 上的文件 /home/uesr/eva.log, 到本地的 /etc 目录下 , 并保持文件属性不变
$scp -p user@sysB:/home/uesr/eva.log /etc
copy sysB 上的目录 /home/user, 到本地 /home/user/tmp, <new dir,/home/user/tmp/user>
$scp -r user@sysB:/home/user /home/user/tmp
复制代码
wget 是一个经由 GPL 许可的可从网络上自动获取文件的自由软件包。它是一个非交互式的命令行工具。支持 HTTP,HTTPS 和 FTP 协议,支持代理服务器以及断点续传功能。 wget 可实现递归下载,彻底重建原始站点的目录结构,实现远程网站的镜像。在递归下载时,wget 将页面中的超级连接转换成指向本地文件,方便离线浏览。缓存
#http://www.gnu.org/software/wget/manual/wget.html
$man wget
wget [options] [URL-list]
复制代码
wget 帮助手册: www.gnu.org/software/wg… 参数说明:安全
选项 | 描述 |
---|---|
-r | 递归下载服务器上全部的目录和文件。由 -l 选项来指定递归深度。 |
-b | 后台下载 |
-m | 制做站点镜像 |
-c | 指定断点续传功能。该功能要求服务器支持断点续传。 |
-I | 指定下载目录列表,可实现批量下载 |
-A/-R | 指定接受/拒绝下载列表,实现选择性地下载 |
--proxy=on/off | 指定是否利用代理服务器进行下载 |
-t, --tries=NUMBER | 最大尝试连接次数 (0 表示无限制,默认为 20 次 ) |
-nc, --no-clobber | 不覆盖已存在的文件 |
-N, --timestamping | 只下载比本地新的文件 |
-nd --no-directories | 不进行目录结构建立 |
-x, --force-directories | 强制建立目录结构 |
-nH, --no-host-directories | 不继承主机目录结构 |
-P, --directory-prefix=PREFIX | 设置目录前缀 |
#下载文件
$wget https://dldir1.qq.com/weixin/mac/WeChatMac.dmg -O WeChatMac.dmg
#有密码
$wget -P /data1 -c --http-user='xxx' --http-passwd='xxx' http://ip:80/scripts/install.sh
复制代码
#下载ftp文件
$wget -P /tmp/ ftp://ftp.tao-ops.com:21/pub/README.md --ftp-user=ftpuser --ftp-password=ftppwd
复制代码
#递归下载 http://www.ibm.com.cn 站点的信息下载全部显示完整网页因此须要的文件,如图片等。
#在下载不进行上层目录搜索并将绝对连接转换为相对连接。
$wget -r -p -np -k http://www.ibm.com.cn
#本地硬盘创建 http://www.ibm.com.cn 的镜像,递归深度为 4,重试次数为无穷
$wget -m -l4 -t0 http://www.ibm.com.cn
#使用代理进行下载,并实现断点续传。
$wget -Y on -c http://www.ibm.com.cn
复制代码
curl,它是对 libcurl 库的一个命令行工具包装。 curl 使用 URL 的语法来传输文件,它支持 FTP, FTPS, HTTP, HTTPS, TFTP, SFTP, TELNET 等多种协议。bash
$man curl
curl [options] [URL...]
复制代码
curl http://www.baidu.com
curl -o 1.html http://www.baidu.com
curl -O http://www.baidu.com/index.html
复制代码
#无密码
$curl ftp://ftp.gnu.org/README
#有密码
$curl ftp://name:passwd@machine.domain:port/full/path/to/file -O
$curl -u name:passwd ftp://machine.domain:port/full/path/to/file -o xxx.file
复制代码
curl -x my-proxy:port ftp://ftp.somesite.com/README
复制代码
curl 适合用来进行自动的文件传输或操做序列,它是一个很好的模拟用户在网页浏览器上的行为的工具。尤为当须要在程序中调用时,libcurl 是个很好的选择。服务器
nc命名netcat,能够链接和重定向Sockets。nc命令功能很是多,它能够打开TCP链接,发送UDP包,监听TCP/UDP端口,进行端口扫描等等。 nc在两机器间传输文件速度很是快,推荐使用。
$man nc
ncat - Concatenate and redirect sockets
#用法
$ncat [OPTIONS...] [hostname] [port]
nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通讯端口>]
[-s<来源位址>][-v...][-w<超时秒数>][主机名称][通讯端口...]
复制代码
基本参数
选项 | 描述 |
---|---|
-4 | 仅使用IPv4 |
-6 | 仅使用IPv6 |
-c,--sh-exec [command] | 执行给定的命令,同/bin/sh |
-e,--exec [command] | 执行给定的命令 |
-m,--max-conns [n] | 设置同时链接的最大数 |
-d,--delay [time] | 设置读/写的等待时间 |
-o,--output [filename] | 将会话的数据保存为文件 |
-i,--idle-timeout [time] | 读/写空闲超时时间 |
-p,--source-port port | 指定本机使用的通讯端口 |
-s,--source addr | 指定远程通讯的主机地址 |
-l,--listen | 监听传入的链接信息 |
-k,--keep-open | 在监听模式中接收多个链接信息 |
-n,--nodns | 直接使用IP地址,不解析域名 |
-t,--telnet | 响应telnet请求 |
-u,--udp | 使用UDP替换默认的TCP |
-v,--verbose | 显示详细的输出信息 |
-w,--wait [time] | 设置链接超时时间,单位为秒 |
-z | 创建链接后立刻断开,不发送和接收任何数据即Zero-I/O模式,仅用于测试链接状 |
目标机(接收机器):
nc -l 1234 >mysql-bin.000001
#源机器: 文件的发送端,启动监听端口并准备好相应的文件
nc 接收机ip 1234 < mysql-bin.000001
复制代码
2)传输文件夹
目标机(接收机器):192.168.0.3
nc -l 1234 | tar xzvf - >mysql3306
源机器(发送机器):
tar czvf - mysql3306 | nc 192.168.0.3 1234
复制代码
扫描本机端口20-22
$nc -z -v -n -w 2 127.0.0.1 20-22
nc: connect to 127.0.0.1 port 20 (tcp) failed: Connection refused
nc: connect to 127.0.0.1 port 21 (tcp) failed: Connection refused
Connection to 127.0.0.1 22 port [tcp/*] succeeded!
#mysql
$nc -z -vv 192.110.103.41 3306
Connection to 192.110.103.41 3306 port [tcp/mysql] succeeded!
#zk
$echo 'ruok' | nc 127.0.0.1 2181
#memcache
$nc -z -vv 127.0.0.1 11211
Connection to 127.0.0.1 11211 port [tcp/memcache] succeeded!
复制代码
yum install memcached
#启动
memcached -d -p 11211 -m 256
#set key flags exptime bytes [noreply]
$nc -z -vv 127.0.0.1 11211
1)存储数据:printf "set mykey 0 1000 6\r\n123456\r\n" |nc 127.0.0.1 11211
2)获取数据:printf "get mykey\r\n" |nc 127.0.0.1 11211
3)删除数据:printf "delete mykey\r\n" |nc 127.0.0.1 11211
4)查看状态:printf "stats\r\n" |nc 127.0.0.1 11211
5)模拟top命令查看状态:watch "echo stats" |nc 127.0.0.1 11211
6)清空缓存:printf "flush_all\r\n" |nc 127.0.0.1 11211 (当心操做,清空了缓存就没了)
复制代码
在192.168.2.34上: nc -l 1234
在192.168.2.33上: nc 192.168.2.34 1234
这样,双方就能够相互交流了。使用ctrl+C(或D)退出。
复制代码
ftp 命令使用文件传输协议(File Transfer Protocol, FTP)在本地主机和远程主机之间或者在两个远程主机之间进行文件传输。FTP 协议容许数据在不一样文件系统的主机之间传输。
$ ftp 主机名 /IP #若是没有指定主机名,ftp 将给出提示符,等待用户输入命令
#ftp命令 描述
ls 列出远程机的当前目录
cd 在远程机上改变工做目录
lcd 在本地机上改变工做目录
ascii 设置文件传输方式为 ASCII 模式
binary 设置文件传输方式为二进制模式
close 终止当前的 ftp 会话
get (mget) 从远程机传送指定文件到本地机
put (mput) 从本地机传送指定文件到远程机
open 链接远程 ftp 站点
quit 断开与远程机的链接并退出 ftp
? 显示本地帮助信息
! 转到 Shell 中
prompt 1 关闭交互模式
复制代码
#ftp get (mget) 从远程机传送指定文件到本地机
#wget
$wget -P /tmp/ ftp://ftp.tao-ops.com:21/pub/README.md --ftp-user=user --ftp-password=ftppwd
#curl有密码
$curl ftp://name:passwd@machine.domain:port/full/path/to/file -O
$curl -u name:passwd ftp://machine.domain:port/full/path/to/file -o xxx.file
复制代码
lrzsz是一个unix通讯套件提供的X,Y,和ZModem文件传输协议,能够用在windows与linux 系统之间的文件传输,体积小速度快。
#安装
$yum install lrzsz
$man rz
$man sz
复制代码
若终端是SecureCRT,打开SecureCRT软件 -> Options -> session options -> X/Y/Zmodem 下能够设置上传和下载的目录;
#下载 (从客户端上传文件到linux服务端)
$rz
#上传(发送文件到客户端)
$sz /etc/passwd
复制代码
文件传输方法基于其自身的特色与优点均有其典型的适用场景: