天天看點

rsync通過服務同步,Linux系統日志,screen工具10.34 linux系統日志10.35 screen工具

rsync還可以通過服務的方式同步,這種方式首先需要開啟一個服務,服務是cs架構的,也就是用戶端和服務端。服務端要開啟一個rsync服務,并且需要監聽一個端口,預設是873端口,這個端口是可以自定義的,然後用戶端可以通過這個端口與服務端進行通信,得以傳輸資料。

啟動服務之前要編輯配置檔案,這個配置檔案的路徑是:/etc/rsyncd.conf ,配置的資訊不一定必須要寫在這個路徑的檔案裡,也可以寫在其他的檔案裡,不過在開啟服務的時候就得加上--configfile=配置檔案的路徑,加上這個參數是為了指定配置檔案的路徑,如果是寫在/etc/rsyncd.conf檔案裡,則不需要指定配置檔案的路徑。

rsyncd.conf檔案配置樣例:

port=873

log file=/var/log/rsync.log

pid file=/var/run/rsyncd.pid

address=192.168.77.130

[test]

path=/tmp/rsync

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.77.132 1.1.1.1 2.2.2.2  192.168.77.0/24

  把配置樣例粘貼到/etc/rsyncd.conf檔案裡:

<a href="https://s5.51cto.com/wyfs02/M00/08/B5/wKiom1nl-AjhzTouAArSdrcWvOo066.png" target="_blank"></a>

儲存退出後,啟動服務:

<a href="https://s5.51cto.com/wyfs02/M00/A7/65/wKioL1nl9VOT6bUQAAD9l5xNuSA941.png" target="_blank"></a>

檢測一下服務是否已啟動:

<a href="https://s5.51cto.com/wyfs02/M02/A7/65/wKioL1nl9VPSikUTAAJOO-hVuAg431.png" target="_blank"></a>

檢查一下監聽的端口:

<a href="https://s4.51cto.com/wyfs02/M02/08/B5/wKiom1nl-AqRWasyAAP3P95pEJ0092.png" target="_blank"></a>

在tmp目錄下建立rsync目錄,并設定為777權限:

<a href="https://s4.51cto.com/wyfs02/M01/08/B5/wKiom1nl-Avg7mx9AAExyBdxec4803.png" target="_blank"></a>

現在我要在在另一台機器同步檔案過來,得執行下面這條指令:

  rsync -avP /tmp/1.txt 192.168.77.130::test/123.txt

<a href="https://s1.51cto.com/wyfs02/M01/A7/65/wKioL1nl9VawzpmHAAKCSQQ4-Co668.png" target="_blank"></a>

如果出現以上錯誤就ping一下另一台機器是否能通,能ping通的話就檢查一下端口是否能通。

telnet指令可以檢測某個端口是否是通的,如果沒有這個指令的話就安裝一下:

安裝指令:yum install -y telnet

  檢測端口:

<a href="https://s1.51cto.com/wyfs02/M00/A7/65/wKioL1nl9VfyB_MxAAIZRvClzDc653.png" target="_blank"></a>

端口不通的話,檢測一下是否是iptables的問題:

<a href="https://s4.51cto.com/wyfs02/M02/08/B5/wKiom1nl-A-RXBh-AAVSOjFaSmA348.png" target="_blank"></a>

這是沒問題的,那麼就檢測另一台機器的iptables:

<a href="https://s4.51cto.com/wyfs02/M00/08/B5/wKiom1nl-BTDovvlAAt0Px1CeCM447.png" target="_blank"></a>

顯示以上這種資訊,就證明是這台機器的iptables問題。

停掉這台機器的firewalld服務:

<a href="https://s2.51cto.com/wyfs02/M00/08/B5/wKiom1nl-BTyWXOSAAD8kA67E6U701.png" target="_blank"></a>

現在再回到另一台機器檢測一下端口:

<a href="https://s2.51cto.com/wyfs02/M02/A7/65/wKioL1nl9V_zVsgJAAI01eNTn4o158.png" target="_blank"></a>

顯示以上結果則表示沒問題的。

Ctrl + ]再輸入quit退出端口檢測:

<a href="https://s1.51cto.com/wyfs02/M01/08/B5/wKiom1nl-BeSLKtAAANpL32Ypv8187.png" target="_blank"></a>

處理完以上問題後,就可以執行rsync指令了:

<a href="https://s5.51cto.com/wyfs02/M00/A7/65/wKioL1nl9WHCfnYGAAKTqh_700c402.png" target="_blank"></a>

如果不想輸入密碼的話,就把配置檔案裡這這兩行注釋掉:

<a href="https://s5.51cto.com/wyfs02/M02/A7/65/wKioL1nl9WPyiBgZAARHhB71lrQ201.png" target="_blank"></a>

現在就可以不需要密碼傳輸檔案了:

<a href="https://s3.51cto.com/wyfs02/M01/08/B5/wKiom1nl-BqQ5466AARafKZ3L0s532.png" target="_blank"></a>

在充當服務端的機器上就能看到同步的檔案了:

<a href="https://s2.51cto.com/wyfs02/M00/A7/65/wKioL1nl9WWDklfAAAEfq9rW7t4574.png" target="_blank"></a>

同樣的我們也可以從服務端上同步檔案:

<a href="https://s2.51cto.com/wyfs02/M02/08/B5/wKiom1nl-B2TjUc7AAV06hq7G-Y685.png" target="_blank"></a>

<a href="https://s2.51cto.com/wyfs02/M01/A7/65/wKioL1nl9WvTjVpwAAcmqNLiaJo761.png" target="_blank"></a>

use chroot為true的情況下,你要同步的目錄裡有軟連結的話,并且你rsync指令裡加上了-L選項的話,那麼同步此目錄的時候,軟連結檔案會同步失敗。

  例如我在源目錄裡建立了一個軟連結檔案:

<a href="https://s3.51cto.com/wyfs02/M00/08/B5/wKiom1nl-CHACf93AALFOFOdJOI736.png" target="_blank"></a>

然後如果我rsync指令裡不加-L選項進行同步的話,是不會出問題的:

<a href="https://s5.51cto.com/wyfs02/M02/08/B5/wKiom1nl-COwQC92AAVQXheqfRw026.png" target="_blank"></a>

但是如果加了-L就會出現錯誤:

<a href="https://s3.51cto.com/wyfs02/M00/08/B5/wKiom1nl-ZKwG4NAAAVJkW3sS5c669.png" target="_blank"></a>

如果修改了端口号的話,那麼在同步的時候需要加上--port選項指定端口号。

  例如我在配置檔案裡端口号更改為8730:

<a href="https://s3.51cto.com/wyfs02/M02/08/B5/wKiom1nl-ZTwU5iDAAPlbNVlLkw780.png" target="_blank"></a>

重新開機一下服務,端口才會更新:

<a href="https://s2.51cto.com/wyfs02/M02/A7/65/wKioL1nl9uGRJXpqAAZweXlv-U8725.png" target="_blank"></a>

加上--port選項指定端口号:

<a href="https://s1.51cto.com/wyfs02/M01/08/B5/wKiom1nl-Znhj6gzAAQWfqYXuj4253.png" target="_blank"></a>

<a href="https://s3.51cto.com/wyfs02/M00/A7/65/wKioL1nl9ujiQjfsAAjHA5l5hOo864.png" target="_blank"></a>

列出服務端的可用子產品:

<a href="https://s4.51cto.com/wyfs02/M02/08/B5/wKiom1nl-Z6QeJgkAAGDhja45SA905.png" target="_blank"></a>

如果list為false的話,這個是列不出來的。

  在同步時需要輸入使用者和密碼的話,就把剛剛注釋的auth users和secrets file恢複,然後在auth users行指定使用者名,secrets file行指定使用者的密碼檔案路徑:

<a href="https://s4.51cto.com/wyfs02/M01/A7/65/wKioL1nl9uuS2AW2AAQ3T7JAQqs453.png" target="_blank"></a>

然後給test使用者指定一個密碼,需要編輯一下test使用者的密碼檔案:

vim /etc/rsyncd.passwd

  内容格式如下:

<a href="https://s5.51cto.com/wyfs02/M01/A7/65/wKioL1nl9uvgoVYIAAB_g-tEwak579.png" target="_blank"></a>

然後把此檔案的權限改為600:

<a href="https://s1.51cto.com/wyfs02/M00/08/B5/wKiom1nl-aGjr0yKAAFC4dMsP5M271.png" target="_blank"></a>

這時候再同步的話就需要輸入test使用者名和密碼了:

<a href="https://s1.51cto.com/wyfs02/M02/A7/65/wKioL1nl9u_z46ZeAAZh3PNkGg0155.png" target="_blank"></a>

但是這樣挺麻煩的每次都需要輸入密碼,但是跳過密碼又不太安全,這時候要想解決這個問題,可以在用戶端上也建立一個密碼檔案,這個密碼檔案裡儲存着test使用者的密碼,在使用rsync指令同步的時候隻要加上--password-file=密碼檔案路徑,這個參數即可不需要輸入密碼:

建立密碼檔案:vi /etc/rsync_pass.txt

  内容格式,直接寫上密碼即可:

<a href="https://s3.51cto.com/wyfs02/M01/08/B5/wKiom1nl-aWicgB0AAB8_K8E3Gg499.png" target="_blank"></a>

然後把此檔案的權限也改為600:

<a href="https://s2.51cto.com/wyfs02/M00/A7/65/wKioL1nl9u_BVtJiAAE_mc5r8io282.png" target="_blank"></a>

這時候再同步的話就不需要輸入test使用者的密碼了:

<a href="https://s3.51cto.com/wyfs02/M00/08/B5/wKiom1nl-afDhaKpAAN9zJrcQlI821.png" target="_blank"></a>

hosts allow這一行是用于指定允許連接配接你服務端的IP,指定多個則空一格即可,也可以指定IP端。

<a href="https://s2.51cto.com/wyfs02/M02/08/B5/wKiom1nl-auRpEIUAAkdtYu8CIQ801.png" target="_blank"></a>

因為Linux系統最常用于作為伺服器的作業系統,是以在系統中會存在着相當多的服務,有時候當一個服務啟動不了或者出現一些問題,就可以去檢視日志檔案,日志往往會記錄着服務啟動、運作、停止的資訊,還有錯誤資訊,有時候報錯不一定會顯示在螢幕上,而是會顯示在日志裡,是以要學會檢視日志。

我們先來看看Linux系統裡有哪些重要的日志:

  第一個是/var/log/messages,這個日志是Linux系統裡一個彙總的日志,很多資訊都記錄在這個日志裡,如果服務沒有指定單獨的日志檔案的話,都會記錄在這個日志裡,其實這就是個系統日志。

<a href="https://s5.51cto.com/wyfs02/M01/A7/65/wKioL1nl9vWwLWDlAAFNwcKSi-8952.png" target="_blank"></a>

在Linux系統裡會有一個日志切割機制,當日志檔案大小增漲到一定的程度,就會對這個日志進行切割:

<a href="https://s4.51cto.com/wyfs02/M00/08/B5/wKiom1nl-avxIwSrAAFKAxNQknM022.png" target="_blank"></a>

這些日志切割是由logrotate服務來完成的,為了防止日志檔案大小無限制的增加,是以會有這樣的一個切割機制。

  /etc/logrotate.conf是logrotate服務的配置檔案,内容如下:

<a href="https://s5.51cto.com/wyfs02/M01/08/B5/wKiom1nl-bLziLjfAA4nB3C9ghk796.png" target="_blank"></a>

其他配置檔案:

<a href="https://s2.51cto.com/wyfs02/M01/08/B5/wKiom1nl-bOxVfn1AAEbKEPCIK0258.png" target="_blank"></a>

syslog檔案内容:

<a href="https://s1.51cto.com/wyfs02/M00/A7/65/wKioL1nl9wCxlQtlAAa13tvJ3u0583.png" target="_blank"></a>

Linux服務寫檔案的時候是根據檔案的inode号去寫的,而不是根據檔案名,是以需要重新加載服務。

  dmesg指令會把系統裡硬體相關的日志列出來,這個日志是儲存在記憶體中的,并不是一個檔案:

<a href="https://s5.51cto.com/wyfs02/M02/08/B5/wKiom1nl-byzeaE4AAzR98FM45Y586.png" target="_blank"></a>

硬碟、網卡等等硬體出問題了,都會記錄在這個日志裡

dmesg -c可以清空這些日志内容,清空時會再列印一遍。

  第二個是/var/log/dmesg 日志檔案,這個日志和dmesg 指令沒有關聯,這是一個系統啟動日志,會記錄系統啟動時的相關資訊:

<a href="https://s2.51cto.com/wyfs02/M01/A7/65/wKioL1nl9wfxvoidAAEQAdinUEE162.png" target="_blank"></a>

last指令,用來檢視系統正确的登入曆史,這個指令調用的是/var/log/wtmp檔案,這個檔案是二進制檔案,是以要用last來檢視:

<a href="https://s2.51cto.com/wyfs02/M00/08/B5/wKiom1nl-cTjGzGhAA_oRMOgROE245.png" target="_blank"></a>

  和last指令對應的是lastb指令,這個指令則是檢視系統登入失敗的曆史資訊,同樣的這個指令也會調用一個檔案,這個檔案是/var/log/btmp檔案,這也是一個二進制檔案:

<a href="https://s2.51cto.com/wyfs02/M00/A7/65/wKioL1nl9w-i5yWLAAMumb_Ucjw944.png" target="_blank"></a>

當你的系統被人暴力破解的時候,這裡就會記錄很多日志資訊。

/var/log/secure是一個安全日志:

<a href="https://s2.51cto.com/wyfs02/M02/A7/65/wKioL1nl9xDiTrgcAAEc63P4Lyc607.png" target="_blank"></a>

無論系統登入成功或者失敗的資訊都會被記錄到這個日志檔案裡:

<a href="https://s5.51cto.com/wyfs02/M01/A7/65/wKioL1nl9xXziEo_AAe2hq_sTpE233.png" target="_blank"></a>

如果登入失敗就會有這樣一個資訊,還會把IP給記錄下來:

<a href="https://s3.51cto.com/wyfs02/M01/08/B5/wKiom1nl-cvgc_LqAAKk_tsQyvc806.png" target="_blank"></a>

<a href="https://s3.51cto.com/wyfs02/M00/A7/65/wKioL1nl9xyRe67GAA1RVtCLLY4468.png" target="_blank"></a>

screen是一個虛拟的終端,我們假設一個需求要執行一個腳本,這個腳本執行時間很長可能要一天一夜,而且這個腳本會輸出一些資訊出來,是以不能中斷,為了保證腳本執行的過程不中斷,有兩個辦法可以解決這個問題,第一個辦法是丢到背景裡去然後加一個日志的輸出,這個方式雖然解決了任務中斷的問題,但是我們卻無法實時在螢幕上檢視到任務的輸出資訊。第二個辦法就是使用screen虛拟終端,把這個腳本放到虛拟終端去執行。

screen安裝指令:yum install -y screen

安裝完之後,執行screen指令,就會進入到虛拟終端。

  現在我在虛拟終端裡執行vmstat指令,每秒輸出一次資訊:

<a href="https://s2.51cto.com/wyfs02/M00/08/B5/wKiom1nl-dOh9smvAAOX2Dr7fOs513.png" target="_blank"></a>

然後再把這個指令的程序扔到背景裡,會退回到真實終端并且會列印一個資訊出來,表示有個程序在虛拟終端裡運作着:

<a href="https://s1.51cto.com/wyfs02/M02/08/B5/wKiom1nl-fnxwJI1AAIfappcpSk882.png" target="_blank"></a>

Ctrl + a之後再按d,可以将一個程序扔到背景裡去。

screen -ls指令可以列出在虛拟終端裡運作着的程序:

<a href="https://s5.51cto.com/wyfs02/M02/08/B5/wKiom1nl-frwrhW9AAH0bBoSmxQ285.png" target="_blank"></a>

想要傳回到虛拟終端裡的話,使用screen -r 然後加上程序的id即可:

<a href="https://s3.51cto.com/wyfs02/M01/A7/65/wKioL1nl90WTedPXAAJGQxrpVfg225.png" target="_blank"></a>

exit可以關閉screen虛拟終端,同樣的會有一行資訊:

<a href="https://s1.51cto.com/wyfs02/M02/A7/65/wKioL1nl90XQMSoLAAB23YfmFbY715.png" target="_blank"></a>

  screen可以有多個,也就是可以執行多次screen指令産生多個虛拟終端,使用screen -lsn可以列出這些虛拟終端的數量:

<a href="https://s1.51cto.com/wyfs02/M00/A7/65/wKioL1nl90iTUAG2AAXDNBXqDV0023.png" target="_blank"></a>

同樣的想要進入哪個screen,指定它的id即可:

<a href="https://s2.51cto.com/wyfs02/M00/08/B6/wKiom1nl-f7wFIThAAL6DdpVc58983.png" target="_blank"></a>

但是有一個問題,就是時間久了之後可能會忘記這個screen是幹什麼用的了,因為它們除了id之外名字都是一樣的。這時候就需要使用到-S選項,這個選項可以自定義screen的名字:

<a href="https://s2.51cto.com/wyfs02/M02/A7/65/wKioL1nl90izOKyAAADxArvuIoQ048.png" target="_blank"></a>

這樣使用screen -ls列出這些screen的是時候就知道是幹嘛的了:

<a href="https://s2.51cto.com/wyfs02/M02/08/B6/wKiom1nl-gDydxC0AAQBFLl2wxE806.png" target="_blank"></a>

這時候使用screen -r 指令就可以指定screen名稱來進入這個screen:

<a href="https://s2.51cto.com/wyfs02/M01/A7/65/wKioL1nl90vCwLc2AAMSAdaoJv8057.png" target="_blank"></a>

本文轉自 ZeroOne01 51CTO部落格,原文連結:http://blog.51cto.com/zero01/1973517,如需轉載請自行聯系原作者

繼續閱讀