rsync服務同步、日誌文件、screen工具

10.32 rsync通過服務同步(上)

在使用該方法進行同步之前需要先在服務的開啓相應服務同時要監聽一個端口(可自定義),默認是監聽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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章