rsync — a fast, versatile, remote (and local) file-copying tool
rsync可以实现增量备份,也支持本地和远程复制。
安装软件:yum install -y rsync
1、例子:
本地复制
[root@localhost test]# rsync -av 1.cap 1.bak //a保留属性,v详细信息 sending incremental file list 1.cap sent 1167 bytes received 31 bytes 2396.00 bytes/sec total size is 1094 speedup is 0.91
远程复制
[root@localhost test]# rsync -av -e "ssh -p 22" 192.168.0.105:/root/test/file ./ //-e "ssh -p 22" 指定端口 root@192.168.0.105's password: receiving incremental file list file sent 30 bytes received 1048 bytes 308.00 bytes/sec total size is 971 speedup is 0.90
2、rsync格式
Local: rsync [OPTION...] SRC... [DEST]
Access via remote shell: (ssh协议)
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] 远程到本地
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST 本地到远程
Access via rsync daemon: (rsync自己的协议)
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] 远程到本地
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST 本地到远程
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
3、rsync的选项
Options
-v, --verbose increase verbosity
[root@localhost test]# rsync -v file vfile file sent 1039 bytes received 31 bytes 2140.00 bytes/sec total size is 971 speedup is 0.91 [root@localhost test]# ll total 8 -rw-r--r--. 1 root root 971 Apr 15 16:31 file -rw-r--r--. 1 root root 971 Apr 15 16:32 vfile
-q, --quiet suppress non-error messages
[root@localhost test]# rsync -q file qfile [root@localhost test]# ll total 12 -rw-r--r--. 1 root root 971 Apr 15 16:31 file -rw-r--r--. 1 root root 971 Apr 15 16:33 qfile -rw-r--r--. 1 root root 971 Apr 15 16:32 vfile
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
[root@localhost test]# rsync -a file afile [root@localhost test]# ll total 20 -rw-r--r--. 1 root root 971 Apr 15 16:31 afile -rw-r--r--. 1 root root 971 Apr 15 16:31 file
--no-OPTION turn off an implied OPTION (e.g. --no-D)
[root@localhost test]# rsync -a --no-t file notfile [root@localhost test]# ll -rw-r--r--. 1 root root 971 Apr 15 16:31 file -rw-r--r--. 1 root root 971 Apr 15 16:42 notfile
-r, --recursive recurse into directories
[root@localhost test]# rsync -r dir1 rdir [root@localhost test]# ll drwxr-xr-x. 3 root root 4096 Apr 15 16:36 dir1 drwxr-xr-x. 3 root root 4096 Apr 15 16:38 rdir
-u, --update skip files that are newer on the receiver
[root@localhost test]# rsync -av file ufile sending incremental file list file sent 1043 bytes received 31 bytes 2148.00 bytes/sec total size is 971 speedup is 0.90 [root@localhost test]# echo "add a line" >> ufile [root@localhost test]# rsync -u file ufile //不会覆盖目的文件 [root@localhost test]# cat ufile |tail -1 add a line
-l, --links copy symlinks as symlinks
[root@localhost test]# rsync -l softfile 192.168.0.105:/root/copy/lfile root@192.168.0.105's password: [root@client copy]# ll lrwxrwxrwx. 1 root root 4 Apr 15 09:04 lfile -> file //不可用
-L, --copy-links transform symlink into referent file/dir
[root@localhost test]# rsync -L softfile 192.168.0.105:/root/copy/Lfile root@192.168.0.105's password: [root@client copy]# ll -rw-r--r--. 1 root root 971 Apr 15 09:03 Lfile //其实是拷贝源文件的内容
-p, --perms preserve permissions
-o, --owner preserve owner (super-user only)
-g, --group preserve group
-D same as --devices --specials
-t, --times preserve modification times
-- delete extraneous files from destination dirs
[root@localhost test]# cd old [root@localhost old]# touch aa bb cc [root@localhost test]# cd new [root@localhost new]# touch aa bb cc dd [root@localhost test]# rsync -av --delete old/ new/ sending incremental file list ./ deleting dd aa bb cc sent 171 bytes received 72 bytes 486.00 bytes/sec total size is 0 speedup is 0.00 [root@localhost test]# ls new aa bb cc //删除目的文件中比源文件多的内容
-P same as --partial --progress
[root@localhost test]# rsync -P new/* Pnew/ //文件数量、速度等信息 aa 0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=2/3) bb 0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=1/3) cc 0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=0/3) sent 154 bytes received 69 bytes 446.00 bytes/sec total size is 0 speedup is 0.00
--exclude 过滤出不需要复制的内容
[root@localhost test]# rsync -av --exclude=aa new/ exnew/ sending incremental file list created directory exnew ./ bb cc sent 125 bytes received 53 bytes 356.00 bytes/sec total size is 0 speedup is 0.00 [root@localhost test]# ls exnew/ bb cc
4、rsync 以ssh的方式拷贝(不安全,会泄露密码)
[root@localhost test]# rsync -avL ./* root@192.168.0.105:/root/test/ root@192.168.0.105's password:
由于需要输入密码所以不适合写到脚本中,但可以通过创建秘钥对,让两台机器产生信任关系从而不用输入密码
如果ssh端口不是22,那么需要写成这样的形式:rsync -av "--rsh=ssh -p port” /dir1/ 192.168.0.101:/tmp/dir2/
5、rsync deamon方式(较安全,不会知道对方的密码,也不可执行任何命令)
需要在一台机器上开启rsync服务,形成C/S的方式
(1)【服务端】配置文件 /etc/rsyncd.conf ,内容如下:
port=873 log file=/var/log/rsync.log #指定日志 pid file=/var/run/rsyncd.pid #指定pid,每一个进程都有一个pid的文件 #address=192.168.0.10 #当机器有多个IP,可以定义绑定的ip。默认监听所有IP。 #以上部分为全局配置部分,以下为模块内的设置 [test] #为模块名,自定义 path=/root/rsync # 指定该模块对应在哪个目录下,共享路径 use chroot=true #是否限定在该目录下,默认为true,当有软连接时,需要改为fasle max connections=4 # 指定最大可以连接的客户端数 read only=no #是否为只读,只读时不可上传内容到此目录下 list=true #是否可以列出共享模块名 uid=root #以哪个用户的身份来传输 gid=root #以哪个组的身份来传输 auth users=test #指定验证用户名,是虚拟用户不是系统用户,可以不设置 secrets file=/etc/rsyncd.passwd #指定密码文件,如果设定验证用户,这一项必须设置 hosts allow=192.168.0.101 192.168.0.105 #设置可以允许访问的主机,可以是网段
密码文件/etc/rsyncd.passwd的权限为600,内容格式为:username:password
[root@localhost test]# vim /etc/rsyncd.passwd [root@localhost test]# chmod 600 /etc/rsyncd.passwd [root@localhost test]# rsync --daemon [root@localhost test]# rsync 192.168.0.103:: test [root@localhost test]# cat /etc/rsyncd.passwd rsuser:123456
启动服务的命令是:rsync --daemon
(2)默认去使用/etc/rsyncd.conf这个配置文件,也可以指定配置文件 rsync --daemon --config=/etc/rsyncd2.conf
可使用的选项有: rsync --daemon –help
几个测试点:port, use chroot, log file, secrets file, hosts allow, list
rsync 192.168.0.102:: 列出用户模块
[root@client copy]# rsync 192.168.0.103:: test
6. curl命令解析
curl是Linux系统命令行下用来简单测试web访问的工具,几个常用的选项你要掌握
curl -xip:port www.baidu.com # -x可以指定ip和端口,省略写hosts,方便实用
curl -Iv http://www.qq.com # -I 可以把访问的内容略掉,只显示状态码,-v可以显示详细过程
curl -u user:password http://123.com # -u可以指定用户名和密码
curl http://study.lishiming.net/index.html -O #可以下载,还可以使用 -o 自定义名字 curl -o index2.html http://study.lishiming.net/index.html
200 正常 404远程url不存在 401 403禁止访问
502 503代理 500服务器有问题 301 302重定向
7. 几个会用到的和网络相关的命令
ping
telnet www.lishiming.net 80
traceroute www.baidu.com
dig @8.8.8.8 study.lishiming.net
nc -z -w2 www.baidu.com 1-1024 # -w2 表示 2s超时 port 这里可以只写一个端口,也可以写一个范围。 使用nc扫描端口时,必须要加 -z 否则不显示结果。另外,如果想把不开放的端口也显示出来,可以加一个 -v