rsync服務同步、日誌文件、screen工具
在使用該方法進行同步之前需要先在服務的開啟相應服務同時要監聽一個端口(可自定義),默認是監聽873端口,開啟服務之前編輯rsync配置文件“/etc/rsyncd.conf”(將服務添加進去)然後直接使用命令:“rsync --daemon(服務名稱)”進行同步。或者將配置文件寫到一個自定義文件中,使用命令“rsync --configfile”進行同步。
配置完成後客戶端可以通過指定端口與服務端進行通信。
配置服務
編輯配置文件:
[root@adai003 grep]# vim /etc/rsyncd.confport=873#指定啟動rsync服務的端口,如果不指定,默認為873端口log file=/var/log/rsync.log#指定日誌文件pid file=/var/run/rsyncd.pid#指定pid文件,這個文件的作用涉及服務的啟動、停止等進程操作。address=192.168.8.125#指定啟動rsyncd服務的IP。假如你的機器有多個IP,就可以指定由其中一個啟動rsyncd服務,如果不指定該參數,默認是在全部IP上啟動。[test]#指定模塊名,裏面內容自定義path=/tmp/rsync#指定數據存放的路徑use chroot=true#use chroot=true/false:安全參數,表示在傳輸文件前首先chroot到path參數所指定的目錄下。這樣做的原因是實現額外的安全防護,但缺點是需要以roots權限,並且不能備份指向外部的符號連接所指向的目錄文件。默認情況下chroot值為true,如果你的數據當中有軟連接文件,建議設置成false。max connections=4#指定最大的連接數,默認是0,即沒有限制。read only=no#read only ture|false:如果為true,則不能上傳到該模塊指定的路徑下。list=true#表示當用戶查詢該服務器上的可用模塊時,該模塊是否被列出,設定為true則列出(此時功能類似於tab),false則隱藏。uid=root gid=root#指定傳輸文件時以哪個uid和gid的身份進行。#auth users=test#指定傳輸時要使用的用戶名#secrets file=/etc/rsyncd.passwd#指定密碼文件,該參數連同上面的參數如果不指定,則不使用密碼驗證。#註意:該密碼文件的權限一定要是600。格式:“用戶名:密碼”hosts allow=192.168.8.129#表示被允許連接該模塊的主機,可以是IP或者網段,如果是多個,中間用空格隔開。
說明: 當設置了auth users和secrets file後,客戶端連服務端也需要用用戶名密碼了,若想在命令行中帶上密碼,可以設定一個密碼文件“/etc/pass”,然後執行命令:“ rsync -avL [email protected]::test/test1/ /tmp/test8/ --password-file=/etc/pass”,其中/etc/pass內容就是一個密碼,權限要改為600(文件內容格式為:“用戶名:密碼”)。
啟動服務
開啟服務: [root@adai003 grep]# rsync --daemon檢測服務狀態: [root@adai003 grep]# ps aux |grep rsyncroot 9155 0.0 0.0 114644 552 ? Ss 23:22 0:00 rsync --daemon root 9159 0.0 0.0 112664 976 pts/0 S+ 23:23 0:00 grep --color=auto rsync [root@adai003 grep]# netstat -lntpActive 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 1300/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2262/master tcp 0 0 192.168.8.125:873 0.0.0.0:* LISTEN 9155/rsync tcp6 0 0 :::22 :::* LISTEN 1300/sshd tcp6 0 0 ::1:25 :::* LISTEN 2262/master 添加path的相應目錄: [root@adai003 grep]# mkdir /tmp/rsync更改目錄權限: [root@adai003 grep]# chmod 777 /tmp/rsync
註: 在配置文件中設定path時註意所給予的權限,安全起見不要直接使用root目錄!!!
配置文件中“[]”為模塊,裏面內容為模塊名稱,該模塊代表的路徑即為path指定的路徑。
使用服務進行同步
在客戶端進行同步:同步到服務端[root@adai002 ~]# rsync -avP /tmp/11.txt 192.168.8.125::test/adai002sending incremental file list11.txt 1148 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/1)sent 1218 bytes received 27 bytes 830.00 bytes/sectotal size is 1148 speedup is 0.92 將服務端數據同步到本機(客戶端):[root@adai002 ~]# rsync -avP 192.168.8.125::test/adai002 /tmp/123.txtreceiving incremental file listadai002 1148 100% 1.09MB/s 0:00:00 (xfer#1, to-check=0/1)sent 45 bytes received 1250 bytes 863.33 bytes/sectotal size is 1148 speedup is 0.89[root@adai002 ~]# ls /tmp/11.txt 123.txt####################################### 在服務端查看同步結果:[root@adai003 ~]# ls /tmp/rsync/adai002完成!
telnet命令
telnet命令用於登錄遠程主機,對遠程主機進行管理。telnet因為采用明文傳送報文,安全性不好,很多Linux服務器都不開放telnet服務,而改用更安全的ssh方式了。
語法: telnet [options] [參數]
應用: 檢測端口是否可通信
[root@adai002 ~]# telnet 192.168.8.125 873Trying 192.168.8.125... Connected to 192.168.8.125. Escape character is '^]'.@RSYNCD: 30.0^] #退出該命令時使用Ctrl+],然後輸入quit即可!@ERROR: protocol startup error Connection closed by foreign host.
10.33 rsync通過服務同步(下)
編輯rsync配置文件,將端口改為port=8730
重啟rsync服務
安裝killall工具:“yum install -y psmisc”。
殺死所有rsync進程: [root@adai003 ~]# killall rsync啟動: [root@adai003 ~]# rsync --daemon檢測: [root@adai003 ~]# !psps aux |grep rsync root 3161 0.0 0.0 114644 548 ? Ss 09:09 0:00 rsync --daemon [root@adai003 ~]# !netstatnetstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 192.168.8.125:8730 0.0.0.0:* LISTEN 3161/rsync
進行同步
[root@adai002 ~]# rsync -avP 192.168.8.125::test/adai002 /tmp/123.txtrsync: failed to connect to 192.168.8.125 (192.168.8.125): Connection refused (111)rsync error: error in socket IO (code 10) at clientserver.c(122) [Receiver=3.0.9]
說明: 因未開放873端口,所以此時同步數據會報錯!那麽如何進行同步呢?方法如下:
[root@adai002 ~]# rsync -avP --port 8730 192.168.8.125::test/adai002 /tmp/123.txtreceiving incremental file list sent 26 bytes received 59 bytes 170.00 bytes/sec total size is 1148 speedup is 13.51
說明: 使用--port選項指定端口號。
10.34 Linux系統日誌
/var/log/messages 系統總日誌
/etc/logrotate.conf 日誌切割配置文件
/var/log/dmesg 系統啟動日誌
/var/log/scure 安全日誌文件
dmesg命令
查看系統硬件相關的日誌。dmesg命令被用於檢查和控制內核的環形緩沖區。kernel會將開機信息存儲在ring buffer中。您若是開機時來不及查看信息,可利用dmesg來查看。開機信息保存在:/var/log/dmesg文件裏。
在該日誌中可以查看系統有哪些硬件故障。
語法: dmesg [option]
Options:
-c:清除日誌(系統重啟會重新生成)
-n:指定記錄信息的層級
last命令
last命令用於顯示用戶最近登錄信息。單獨執行last命令,它會讀取/var/log/wtmp的文件,並把該給文件的內容記錄的登入系統的用戶名單全部顯示出來。
lastb命令
lastb命令用於顯示用戶錯誤的登錄列表,此指令可以發現系統的登錄異常。單獨執行lastb命令,它會讀取位於/var/log目錄下,名稱為btmp的文件,並把該文件內容記錄的登入失敗的用戶名單,全部顯示出來。(/var/log/btmp)
logrotate命令
logrotate命令用於對系統日誌進行輪轉、壓縮和刪除,也可以將日誌發送到指定郵箱。使用logrotate指令,可讓你輕松管理系統所產生的記錄文件。每個記錄文件都可被設置成每日,每周或每月處理,也能在文件太大時立即處理。您必須自行編輯,指定配置文件,預設的配置文件存放在/etc/logrotate.conf文件中。
安裝logrotate工具: yum install 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)
10.35 screen工具
Screen是一款由GNU計劃開發的用於命令行終端切換的自由軟件。用戶可以通過該軟件同時連接多個本地或遠程的命令行會話,並在其間自由切換。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了統一的管理多個會話的界面和相應的功能。
安裝screen工具:yum install -y screen
將一個任務放入後臺
# nohup command >[日誌文件] 2>[日誌文件] &
screen語法:
screen [option] [參數]
在每個screen session 下,所有命令都以 ctrl+a(C-a) 開始:
C-a d -> detach,暫時離開當前session,將目前的 screen session (可能含有多個 windows) 丟到後臺執行,並會回到還沒進 screen 時的狀態,此時在 screen session 裏,每個 window 內運行的 process (無論是前臺/後臺)都在繼續執行,即使 logout 也不影響。
查看當前screen下的任務
[root@adai003 ~]# screen -ls There is a screen on: 3628.pts-0.adai003 (Detached)1 Socket in /var/run/screen/S-root.
返回screen session
[root@adai003 ~]# screen -r 3628(screen的id)
終止screen:在screen session執行如下命令即可
[root@adai003 ~]# screen -r 3628
為screen指定作業名
[root@adai003 ~]# screen -S "test_screen"
說明: 這樣做的目的是方便區分每個screen任務。
擴展:xargs命令
xargs命令是給其他命令傳遞參數的一個過濾器,也是組合多個命令的一個工具。它擅長將標準輸入數據轉換成命令行參數,xargs能夠處理管道或者stdin並將其轉換成特定命令的命令參數。xargs也可以將單行或多行文本輸入轉換為其他格式,例如多行變單行,單行變多行。xargs的默認命令是echo,空格是默認定界符。這意味著通過管道傳遞給xargs的輸入將會包含換行和空白,不過通過xargs的處理,換行和空白將被空格取代。xargs是構建單行命令的重要組件之一。
xargs命令用法1
xargs用作替換工具,讀取輸入數據重新格式化後輸出。
多行輸入單行輸出
[root@adai003 ~]# cat test1 23 4a b c d [root@adai003 ~]# cat test | xargs1 2 3 4 a b c d
xargs -n 指定每行輸出單元數量
[root@adai003 ~]# cat test | xargs -n41 2 3 4a b c d
xargs -d 指定分隔符
[root@adai003 ~]# echo "test#test#test#test" | xargs -d# -n2test testtest test
rsync服務同步、日誌文件、screen工具