10.32/10.33 rsync經過服務同步mysql
10.34 linux系統日誌linux
10.35 screen工具sql
10.32/10.33 rsync經過服務同步:安全
rsync還能夠經過服務的方式同步。那須要開啓一個服務,他的架構是cs架構,客戶端服務端。服務端的話開啓rsync服務,而且要監聽一個端口,默認是873,並且這個端口是能夠自定義的。咱們開啓這個服務以後呢,客戶端就能夠根據這個873端口和服務端通訊、能夠傳輸數據。他的命令模式爲 rsync -av test1/ 192.168.159.130::module/dir/服務器
rsync經過服務的方式同步網絡
~1. 要編輯配置文件 vi /etc/rsyncd.conf 咱們在啓動服務以前,要先編輯這個配置文件架構
儘可能把配置文件寫在這個文件裏,咱們可使用rsync --daemon來直接啓動服務ssh
rsyncd.conf樣例,能夠直接把樣例複製到配置文件裏socket
port=873tcp
log file=/var/log/rsync.log
pid file=/var/run/rsyncd.pid
address=192.168.133.130 不寫此行的話,就會顯示0000,綁定所有的IP
[test] 方括號括起來的是模塊的名字
path=/root/rsync 可可改爲tmp目錄下
use chroot=true
max connections=4
read only=no
list=true
uid=root
gid=root
auth users=test 定義傳輸的時候,是否要輸入密碼。註釋掉則不用密碼
secrets file=/etc/rsyncd.passwd
hosts allow=192.168.133.132 1.1.1.1 2.2.2.2 192.168.133.0/24 容許哪些機器去作同步
(容許哪一個IP過來連) 多個的話用空格來間隔 也能夠寫IP段
rsyncd.conf配置文件詳解
port:指定在哪一個端口啓動rsyncd服務,默認是873端口。
log file:指定日誌文件。
pid file:指定pid文件,這個文件的做用涉及服務的啓動、中止等進程管理操做。
address:指定啓動rsyncd服務的IP。假如你的機器有多個IP,就能夠指定由其中一個啓動rsyncd服務,若是不指定該參數,默認是在所有IP上啓動。
[]:指定模塊名,裏面內容自定義。這寫什麼,同步的時候::後面就寫什麼
path:指定數據存放的路徑。
use chroot true|false:表示在傳輸文件前首先chroot到path參數所指定的目錄下。這樣作的緣由是實現額外的安全防禦,但缺點是須要以roots權限,而且不能備份指向外部的符號鏈接所指向的目錄文件。默認狀況下chroot值爲true,若是你的數據當中有軟鏈接文件,阿銘建議你設置成false。
max connections:指定最大的鏈接數,默認是0,即沒有限制。
read only ture|false:若是爲true,則不能上傳到該模塊指定的路徑下。
list:表示當用戶查詢該服務器上的可用模塊時,該模塊是否被列出,設定爲true則列出,false則隱藏。
uid/gid:指定傳輸文件時以哪一個用戶/組的身份傳輸。
auth users:指定傳輸時要使用的用戶名。
secrets file:指定密碼文件,該參數連同上面的參數若是不指定,則不使用密碼驗證。注意該密碼文件的權限必定要是600。格式:用戶名:密碼
hosts allow:表示被容許鏈接該模塊的主機,能夠是IP或者網段,若是是多個,中間用空格隔開。
當設置了auth users和secrets file後,客戶端連服務端也須要用用戶名密碼了,若想在命令行中帶上密碼,能夠設定一個密碼文件
rsync -avL test@192.168.133.130::test/test1/ /tmp/test8/ --password-file=/etc/pass
其中/etc/pass內容就是一個密碼,權限要改成600
~2. 啓動服務rsync --daemon
啓動以後ps aux | grep rsync查看一下是否有。netstat -lntp看一下他的端口是不是咱們設置的873端口。
~3. 運行命令的格式寫法: rsync -av test1/ 192.168.159.130::module/dir/
有兩個冒號
加--port 8830 可指定端口爲8830 rsync -av --port 8830test1/ 192.168.159.130::module/dir/
小知識:telnet 192.168.159.130 873 是檢測一個IP端口是否通的一個命令
實例:
[root@axinlinux-01 ~]# vi /etc/rsyncd.conf
port=873
log file=/var/log/rsync.log
pid file=/var/run/rsyncd.pid
address=192.168.133.130 由於作實驗時。ps或netstat是都搜不到,因此就刪掉了
[test]
path=/tmp/rsync 爲方便作實驗,改到了tmp下
use chroot=true
max connections=4
read only=no
list=true
uid=root
gid=root
auth users=test
secrets file=/etc/rsyncd.passwd
hosts allow=192.168.159.128
[root@axinlinux-01 ~]# rsync --daemon
[root@axinlinux-01 ~]# ps aux | grep rsync
root 2396 0.0 0.0 114740 584 ? Ss 22:10 0:00 rsync --daemon
root 2416 0.0 0.0 112720 980 pts/0 S+ 22:15 0:00 grep --color=auto rsync
[root@axinlinux-01 ~]# netstat -lntp 檢查端口
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 992/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1194/master
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 2396/rsync
[root@aminglinux-02 ~]# rsync -avP /tmp/axin.txt 192.168.159.130::test/axin-02.txt 咱們從目標機器上直接拉就能夠了
rsync: failed to connect to 192.168.159.130 (192.168.159.130): Connection refused (111) 報錯
rsync error: error in socket IO (code 10) at clientserver.c(125) [sender=3.1.2]
[root@aminglinux-02 ~]# ping 192.168.159.130 ping本身
PING 192.168.159.130 (192.168.159.130) 56(84) bytes of data.
64 bytes from 192.168.159.130: icmp_seq=1 ttl=64 time=0.091 ms
[root@aminglinux-02 ~]# telnet 192.168.159.130 873 telnet查看端口
Trying 192.168.159.130... 報錯
telnet: connect to address 192.168.159.130: Connection refused
[root@aminglinux-02 ~]# iptables -nvL 查看規則
Chain IN_work_deny (1 references) 發現爲清零
pkts bytes target prot opt in out source destination
Chain IN_work_log (1 references)
pkts bytes target prot opt in out source destination
Chain OUTPUT_direct (1 references)
pkts bytes target prot opt in out source destination
[root@aminglinux-02 ~]# systemctl stop firewalld (對方的firewalld也要停掉) 關閉兩方的firewalld。理論上既能夠了
阿鑫的機器telnet仍是不成功
[root@aminglinux-02 ~]# rsync -avP /tmp/axin.txt 192.168.159.130::test/axin-02.txt 在拉取就能夠了,輸入密碼。不想輸入密碼也能夠,要改一下那個配置文件
----------------------------------------------------------------------------------------------------------------------------------------------------
10.34 linux系統日誌:(重要)
服務在啓動或運行的過程中,可能會遇到一些問題。好比mysql服務啓動不了,除了看他的報錯,還要關注他的日誌。不少的錯誤會記錄在日誌當中,而不會出如今屏幕上
~1. /var/log/messages
這個是linux中總的日誌,好多日誌都記錄在這個下面。除非一些服務有定義一些單獨的日誌
~2. la /var/log/messages* 查看他的切割後的日誌
logrotate
日誌的內置切割工具。每週切割一次
~3. /etc/logrotate.conf 日誌切割配置文件
http://www.javashuo.com/article/p-tauwscem-r.html 可參考這個日誌
~4. dmesg 命令
系統硬件相關的日誌列出來。這個日誌是保存在內存中的,並非一個文件
用在,好比硬件損壞或網卡有問題了,均可以記錄在這裏。除了查看/var/log/messages以外,還要去查看這個關於硬件的錯誤故障。
-c清空這些日誌
~5. /var/log/dmesg
跟dmesg命令沒有關係。就是系統啓動的日誌記錄的一些信息
~6. last 命令。
調用的文件路徑是/var/log/wtmp二進制文件,沒法cat,只能用last查看信息
用來查看正確的登陸歷史
~7. lastb 命令。
查看的登陸失敗的用戶。
對應的文件是/var/log/btmp,也是二進制文件
好比被人暴力破解,就會記錄在這個命令裏
~8. /var/log/secure 安全日誌
咱們登陸一個系統,驗證成功,會在這裏記錄一個日誌。若是沒有成功也會去記錄
好比,被暴力破解,屢次登陸。咱們能夠tail -f /var/log/secure(動態查看這個文件後10條)。咱們在另外一個終端錯誤登陸一次,就會在這個日誌裏顯示
----------------------------------------------------------------------------------------------------------------------------------------------------
10.35 screen工具:
screen虛擬的一個屏幕。也能夠把他認爲是一個虛擬的終端。那用在什麼場景下呢:
假若有一個需求,去執行一個腳本。那這個腳本指定時間很長,可能須要一天一晚上。並且這個腳本會輸出一些東西出來,那也就意味着這個腳本不能中途中斷。咱們遠程是須要網絡的,不能網絡出任何差錯,那因此有兩個辦法:
第一個辦法,把這個任務丟到後臺去,而後給他加一個日誌的輸出。雖然沒有輸出到屏幕上,但能夠把他輸出到日誌裏
能夠用這個命令nohup
~1. nohup command &
執行命令+執行日誌+&
意思就是即便終端斷開,他依然能夠在後臺執行
那咱們雖然解決了任務中斷的問題,但沒有辦法實時的看到任務輸出的東西,由於在後臺。咱們是能夠寫一個日誌,但咱們不能在屏幕上看到輸出的
screen工具(爲了避免讓一個任務意外中斷) 可多個screen一塊兒使用
我能夠要把我執行的命令放到這個終端裏,而後我能夠退出我這個pts0或pts1這個遠程終端以前,我先把這個screen丟到後臺去,我隨時用能夠隨時調出來
~2.screen是一個虛擬終端
~3. yum install -y screen
~4. screen 直接回車就進入了虛擬終端
也就是從新進入了一個窗口,那這個窗口就是一個虛擬終端
~5. ctrl a組合鍵,再按 d 退出虛擬終端,但不是結束
暫時退出來,還能夠再進去
~6. screen -ls 查看虛擬終端列表 (可支持多個screen)
還有這個ID號
[root@axinlinux-01 ~]# screen -ls
There are screens on:
1615.pts-0.axinlinux-01 (Detached)
1600.pts-0.axinlinux-01 (Detached)
1583.pts-0.axinlinux-01 (Detached)
3 Sockets in /var/run/screen/S-root.
~7. screen -r id 進入指定的終端
screen -r 加screen -ls查看的ID號,就能夠回到那個虛擬終端
~8. screen -S 「aming」
由於多個screen的時候,咱們分不清那個是作什麼的。
-S能夠在建立這個screen的時候加雙引號,給他建立一個名字。在-ls的時候更加方便。而且-r進入的時候能夠不加ID號,直接雙引號寫建立的名字就能夠了
[root@axinlinux-01 ~]# screen -S "vmstat 1"
[detached from 1646.vmstat 1]
[root@axinlinux-01 ~]# screen -ls
There are screens on:
1646.vmstat 1 (Detached) 咱們會看到咱們建立的這個名叫 vmsat 1 的screen
[root@axinlinux-01 ~]# screen -r "vmstat 1" -r的時候寫建立的名字也是能夠的
實例:
[root@axinlinux-01 ~]# screen 直接回車,進入虛擬終端(也就是新窗口)
在新窗口咱們能夠執行vmstat 1(不可終端的任務)
[detached from 1448.pts-0.axinlinux-01] 按ctrl+a,再按d(暫時退出來)
[root@axinlinux-01 ~]# screen -ls 查看虛擬終端的列表,和這個id號1448
There is a screen on:
1448.pts-0.axinlinux-01 (Detached)
1 Socket in /var/run/screen/S-root.
[root@axinlinux-01 ~]# screen -r 1448 screen -r 1448 回到這個虛擬終端
-
--
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 1440116 2076 302896 0 0 0 0 59 50 0 0 100 0 0
0 0 0 1440116 2076 302896 0 0 0 0 51 46 0 0 100 0 0
^C
[root@axinlinux-01 ~]# exit 若是不須要這個screen,在虛擬終端裏直接敲 exit,把它殺死就能夠了
[root@axinlinux-01 ~]# screen -ls 回到linux,咱們在screen -l看,就沒有了
No Sockets found in /var/run/screen/S-root.