一、rsync:remove sync(远程同步),数据备份工具,能够实现本地同步和远程同步,同步时能够增量同步,只同步不相同的数据,也就是说只同步两个文件不不一样的部分,所以速度很是快:node
rsync的五种命令格式:注:src表示源文件 dest表示目标文件:shell
rsync options src dest #本地到本地bash
rsync options src user@ip地址:/目录 #从本地到远程ssh
rsync options user@ip地址:/目录 dest #从远程主机到本地工具
rsync options src user@ip地址::dest #从本地到远端主机(两个冒号,验证方式不一样)post
rsync options user@ip地址::src dest #从远端主机到本地(两个冒号,验证方式不一样)ui
注释:@前面的user能够省略,省略后则是以目标主机的当前用户验证,也能够写成普通用户: rsync -av src xiaoxiao@IP地址:/目录spa
options:命令行
-a:表示以递归方式传输文件,包含了-rlptgoD选项: -a--no-p日志
-r:同步目录时须要加此选项,相似于cp的-r选项:
-v:verbose,传输时可视化:
-l:保留软链接,(由于没同步软链接的源文件,因此保留后也没法使用):
-L:同步软链接时,会把软链接所指的源文件也同步过来:
-p:同步时保留源文件的权限:
-o:同步时保留源文g件的属主信息(如www同步后仍是www,若不存在,则显示UID):
-g:同步时保留源文件的属组信息(GID):
-D:同步时保留文件的设备信息:
-t:同步时保留文件时间信息:
--delte:同步时会删除DEST(目标目录)里STC(源目录)没有的文件:
--exclude:过滤指定文件,可以使用通配(--exclude "*.txt")
-P:显示同步过程(更详细,会显示速率,传输百分比等):
-u:update,若是目标文件比源文件新,则不一样步源文件过来(新旧根据mtime来判断的):
-z:传输时压缩文件:
示例1:同步本地文件或者目录: rsync -av test.txt /tmp/123.txt
[root@localhost_001 ~]# rsync -av test.txt /tmp/123.txt #同步test.txt到tmp目录下的123.txt sending incremental file list test.txt sent 89 bytes received 35 bytes 248.00 bytes/sec total size is 0 speedup is 0.00 [root@localhost_001 ~]# ls -ld /tmp/123.txt -rw-r--r-- 1 root root 0 8月 14 12:32 /tmp/123.txt [root@localhost_001 ~]# rsync -av test /tmp/test1 #同步test目录到/tmp/目录下test1 sending incremental file list created directory /tmp/test1 test/ test/123 test/2112 -> 123 test/bac.txt -> /tmp/ipt.txt sent 409 bytes received 143 bytes 1,104.00 bytes/sec total size is 15 speedup is 0.03 [root@localhost_001 ~]# ls -ld /tmp/test1/ drwxr-xr-x 3 root root 18 8月 14 12:34 /tmp/test1/
示例2:同步本地文件到远程主机: rsync -av test.txt 192.168.149.130:/tmp/123.txt
rsync -av test.txt root@192.168.149.130:/tmp/123.txt
同步本机的test.txt文件到远端主机192.168.149.130的tmp目录下: [root@localhost_001 ~]# rsync -av test.txt root@192.168.149.130:/tmp/1231.txt root@192.168.149.130's password: sending incremental file list test.txt sent 89 bytes received 35 bytes 27.56 bytes/sec total size is 0 speedup is 0.00 在远端主机130下查看: [root@localhost_002 ~]# ls -ld /tmp/1231.txt -rw-r--r-- 1 root root 0 8月 14 12:32 /tmp/1231.txt
注释:执行远程同步时,两端主机均须要安装rsync: yum install -y rsync
示例3:同步远端主机文件到本地: rsync -av root@192.168.149.130:/tmp/1121.txt /tmp/test.txt
[root@localhost_001 ~]# rsync -av 192.168.149.130:/tmp/1231.txt /tmp/test.txt root@192.168.149.130's password: receiving incremental file list 1231.txt sent 43 bytes received 89 bytes 52.80 bytes/sec total size is 0 speedup is 0.00 [root@localhost_001 ~]# ls -ld /tmp/test.txt -rw-r--r-- 1 root root 0 8月 14 12:32 /tmp/test.txt
rsync同步时采用的是ssh协议,须要借助其端口,有时若是端口发生改变,则须要加 -e “ssh -p 56588”
同步本机文件/tmp/test.txt到远端主机130的tmp目录下,经过其ssh端口“52588” [root@localhost_001 ~]# rsync -av -e "ssh -p 52588" /tmp/test.txt 192.168.149.130:/tmp/test1.txt root@192.168.149.130's password: sending incremental file list test.txt sent 89 bytes received 35 bytes 35.43 bytes/sec total size is 0 speedup is 0.00 在远端主机130上查看其文件: [root@localhost_002 ~]# ls -ld /tmp/test1.txt -rw-r--r-- 1 root root 0 8月 14 12:32 /tmp/test1.txt
示例4:--delte:删除目标目录中 源文件没有的文件:
[root@localhost_001 test]# ls /root/test #查看其源文件 123 2112 234 4356 567 bac.txt dir1 dir2 [root@localhost_001 test]# ls /tmp/test/ 123 2112 222 234 4356 567 bac.txt dir1 dir2 #查看其目标文件 [root@localhost_001 test]# rsync -av --delete /root/test/ /tmp/test/ #同步操做 sending incremental file list deleting 222 ./ sent 225 bytes received 28 bytes 506.00 bytes/sec total size is 15 speedup is 0.06
示例5:--exclude 过滤文件:指定文件不一样步:
[root@localhost_001 ~]# ls test #查看文件,发现有.txt的文件存在: 123 2112 234 4356 567 bac.txt dir1 dir2 [root@localhost_001 ~]# rsync -av --exclude "*.txt" /root/test/ /tmp/test/ #过滤不包含*.txt sending incremental file list created directory /tmp/test ./ 123 2112 -> 123 234 4356 567 dir1/ dir2/ sent 355 bytes received 138 bytes 986.00 bytes/sec total size is 3 speedup is 0.01 [root@localhost_001 ~]# ls /tmp/test/ #再次查看文件,发现没有txt的文件: 123 2112 234 4356 567 dir1 dir2 支持过滤多个选项,须要加上多个--exclude: [root@localhost_001 ~]# rsync -av --exclude "*.txt" --exclude "1*" /root/test/ /tmp/test/
示例4:同步软链接:须要加大L同步其源文件,否则没法使用:
在001机器上rsync同步到002机器上: [root@localhost_001 ~]# rsync -avL -e "ssh -p 52588" /root/test/ root@192.168.149.130:/tmp/test1/ root@192.168.149.130's password: bac.txt -> /tmp/ipt.txt dir1/ dir2/ sent 393 bytes received 146 bytes 154.00 bytes/sec total size is 15 speedup is 0.03
示例5:同步是若是目标文件比源文件新则不一样步: -u update
001主机操做: [root@localhost_001 ~]# rsync -av -e "ssh -p 52588" /root/test.txt 192.168.149.130:/root/test1.txt root@192.168.149.130's password: sending incremental file list test.txt sent 101 bytes received 35 bytes 54.40 bytes/sec total size is 7 speedup is 0.05 002主机: [root@localhost_002 ~]# cat test1.txt dsjdfl;jsafkla;sjf;klsafjk;lsdfjkals;f sdfjksdfjs'ad fsaljflfasdf
示例6:显示详细的过程,如速率、百分比等: -p
[root@localhost_001 ~]# rsync -avP -e "ssh -p 52588" /root/test/ root@192.168.149.130:/tmp/test1/ root@192.168.149.130's password: sending incremental file list created directory /tmp/test1 ./ 123 0 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=7/9) 2112 -> 123 234 0 100% 0.00kB/s 0:00:00 (xfr#2, to-chk=5/9) 4356 0 100% 0.00kB/s 0:00:00 (xfr#3, to-chk=4/9) 567 0 100% 0.00kB/s 0:00:00 (xfr#4, to-chk=3/9) bac.txt -> /tmp/ipt.txt dir1/ dir2/ sent 393 bytes received 146 bytes 119.78 bytes/sec total size is 15 speedup is 0.03
二、客户端链接服务端须要输入密码,若想在命令行中带上密码,能够设定一个密码文件:/etc/rsyncd.passwd(客户端)
首先在服务端配置/etc/rsyncd.conf下制定验证的用户名和密码所在的配置文件:
[root@localhost_001 ~]# cat /etc/rsyncd.conf |grep -v ^# port=8730 #指定端口 log file=/var/log/rsync.log #指定日记所在文件 pid file=/var/run/rsyncd.pid #PID所在目录 address=192.168.149.129 #指定启动了rsync服务的IP地址,默认是当前系统的全部IP地址: [test] #模块名称: path=/tmp/rsync #所在的路径: use chroot=false #是否限制在此目录: max connections=4 #最大链接数: read only=no #是否须要客户端上传文件: list=true #是否会在客户端列出模块名称: uid=root #链接个人时候的用户: gid=root #链接个人时候的组: auth users=test #制定登陆的用户名 secrets file=/etc/rsyncd.passwd #制定密码所在的配置文件: hosts allow=192.168.149.130 #容许那些IP地址或者是网段链接我:
如图:在服务端新建文件:/etc/rsyncd.passwd:格式以下:
[root@localhost_001 test1]# cat /etc/rsyncd.passwd test:12345 用户 :密码
而后在客户端操做推文件和拉文件均需输入密码:
[root@localhost_002 ~]# rsync -avL /tmp/test8/ --port=8730 test@192.168.149.129::test/test1/ Password: sending incremental file list ./ 1.txt sent 252 bytes received 40 bytes 34.35 bytes/sec total size is 539 speedup is 1.85 [root@localhost_002 ~]# rsync -avL --port=8730 test@192.168.149.129::test/test1/ /tmp/test8/ Password: receiving incremental file list sent 22 bytes received 202 bytes 29.87 bytes/sec total size is 539 speedup is 2.41
3:有时候咱们须要些在shell脚本里,须要自动化操做:在如上的基础上,在客户端新建一个配置文件:里面只写入密码便可:
客户端: [root@localhost_002 ~]# cat /etc/rsyncd_pass.txt 12345 而后在服务端操做: [root@localhost_002 ~]# rsync -avL /tmp/test8/ --port=8730 test@192.168.149.129::test/test1/ --password-file=/etc/rsyncd_pass.txt sending incremental file list ./ 55.txt sent 273 bytes received 40 bytes 56.91 bytes/sec total size is 539 speedup is 1.72
二、系统日记:配置文件以下:
/var/log/message:系统总日记:(各类各样的都有)
/etc/loogrotate.conf:日记配置切割文件:
dmesg:硬件错误: -c : 清空内存的日记,并从新生成日记:
/var/log/dmesg:系统启动的日记:
last:用于显示用户最近登陆信息,单独执行last命令,他会读取/var/log/wtmp(二进制的)的文件:并把该文件打印出来:
[root@localhost_002 ~]# last root pts/1 192.168.149.135 Tue Aug 21 13:03 still logged in root pts/1 192.168.149.135 Tue Aug 21 12:41 - 13:02 (00:21) root pts/0 192.168.149.135 Thu Aug 16 00:37 still logged in root pts/0 192.168.149.135 Wed Aug 15 23:48 - 00:37 (00:49) root pts/0 192.168.149.135 Wed Aug 15 22:27 - 23:48 (01:20) reboot system boot 3.10.0-693.el7.x Wed Aug 15 22:26 - 13:35 (5+15:08)
lastb:显示用户登陆错误的信息,可发现异常的登陆,单独执行lastb命令,会读取/var/log/btmp(二进制)的文件:列出登陆失败的用户名单:
[root@localhost_002 ~]# last root pts/1 192.168.149.135 Tue Aug 21 13:03 still logged in root pts/1 192.168.149.135 Tue Aug 21 12:41 - 13:02 (00:21) root pts/0 192.168.149.135 Thu Aug 16 00:37 still logged in root pts/0 192.168.149.135 Wed Aug 15 23:48 - 00:37 (00:49) root pts/0 192.168.149.135 Wed Aug 15 22:27 - 23:48 (01:20) reboot system boot 3.10.0-693.el7.x Wed Aug 15 22:26 - 13:35 (5+15:08)
logrotate:用于对日记的操做,对系统日记进行切割、压缩和删除,也能够将日记发送到指定邮箱,能够设定每日、每周删除等,只是必须手动编辑配置文件:/etc/logrotate.conf
安装logrotate工具:yum install -y logrotate crontabs
Logrotate可配置参数,可以使用man命令来查询:
compress 经过gzip压缩转储之后的日志 nocompress 不压缩 copytruncate 用于还在打开中的日志文件,把当前日志备份并截断 nocopytruncate 备份日志文件可是不截断 create mode owner group 转储文件,使用指定的文件模式建立新的日志文件 nocreate 不创建新的日志文件 delaycompress 和 compress 一块儿使用时,转储的日志文件到下一次转储时才压缩 nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。 errors address 专储时的错误信息发送到指定的Email 地址 ifempty 即便是空文件也转储,这个是 logrotate 的缺省选项。 notifempty 若是是空文件的话,不转储 mail address 把转储的日志文件发送到指定的E-mail 地址 nomail 转储时不发送日志文件 olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统 noolddir 转储后的日志文件和当前日志文件放在同一个目录下 prerotate/endscript 在转储之前须要执行的命令能够放入这个对,这两个关键字必须单独成行 postrotate/endscript 在转储之后须要执行的命令能够放入这个对,这两个关键字必须单独成行 daily 指定转储周期为天天 weekly 指定转储周期为每周 monthly 指定转储周期为每个月 rotate count 指定日志文件删除以前转储的次数,0 指没有备份,5 指保留5 个备份 tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~ size size 当日志文件到达指定的大小时才转储,bytes(缺省)及KB(sizek)或MB(sizem)
四、screen:虚拟终端,用户能够经过此命令同时运行多个终端或者命令行会话,并在其间自由切换,提供统一的会话管理:
不让某个任务中断:
安装screen工具:yum install -y screen
语法:sreen 直接进入虚拟终端:
-ls:列出当前在运行的虚拟终端:
-r:后面加id,进入某个虚拟终端:
-S:后面跟名称,虚拟终端名称自定义:
按alt+a,再按d则退出须要screen:
[root@localhost_002 ~]# screen #进入第一个虚拟终端 [detached from 1949.pts-1.localhost_002] [root@localhost_002 ~]# screen #进入第二个虚拟终端 [detached from 1964.pts-1.localhost_002] [root@localhost_002 ~]# screen -S "testyou" #进入第三个自定义的虚拟终端 [detached from 1978.testyou] [root@localhost_002 ~]# [root@localhost_002 ~]# [root@localhost_002 ~]# screen -ls #查看当前的虚拟终端 There are screens on: 1978.testyou (Detached) 1964.pts-1.localhost_002 (Detached) 1949.pts-1.localhost_002 (Detached) 3 Sockets in /var/run/screen/S-root. [root@localhost_002 ~]# screen -r 1978 #进入id为1978的虚拟终端 [detached from 1978.testyou] [root@localhost_002 ~]# screen -r testyou #也可根据名称进入某一虚拟终端 [detached from 1978.testyou] 进入后能够exit,退出虚拟终端 [root@localhost_002 ~]# screen -ls #查看还剩两个虚拟终端 There are screens on: 1964.pts-1.localhost_002 (Detached) 1949.pts-1.localhost_002 (Detached) 2 Sockets in /var/run/screen/S-root.
扩展:xargs:用做替换工具,用于读取输入数据从新格式化后输出:
[root@localhost_002 ~]# cat test 1 2 3 4 a b c d [root@localhost_002 ~]# cat test|xargs 1 2 3 4 a b c d [root@localhost_002 ~]# cat test|xargs -n3 1 2 3 4 a b c d [root@localhost_002 ~]# cat test|xargs -n2 1 2 3 4 a b c d