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

rsync經過服務同步(上)

在使用該方法進行同步以前須要先在服務的開啓相應服務同時要監聽一個端口(可自定義),默認是監聽873端口,開啓服務以前編輯rsync配置文件「/etc/rsyncd.conf」(將服務添加進去)而後直接使用命令:「rsync --daemon(服務名稱)」進行同步。或者將配置文件寫到一個自定義文件中,使用命令「rsync --configfile」進行同步。
配置完成後客戶端能夠經過指定端口與服務端進行通訊。html

配置服務

編輯配置文件:

[root@yong-01 ~]# vim /etc/rsyncd.conf 

port=873
#指定啓動rsync服務的端口,若是不指定,默認爲873端口

log file=/var/log/rsync.log
#指定日誌文件

pid file=/var/run/rsyncd.pid
#指定pid文件,這個文件的做用涉及服務的啓動、中止等進程操做。

address=192.168.180.134
#指定啓動rsyncd服務的IP。假如你的機器有多個IP,就能夠指定由其中一個啓動rsyncd服務,若是不指定該參數,默認是在所有IP上啓動。

[test]
#指定模塊名,裏面內容自定義

path=/tmp/rsync
#指定數據存放的路徑

use chroot=true
#use chroot=true/false:安全參數,表示在傳輸文件前首先chroot到path參數所指定的目錄下。這樣作的緣由是實現額外的安全防禦,但缺點是須要以root權限,而且不能備份指向外部的符號鏈接所指向的目錄文件。默認狀況下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.180.135 192.168.180.0/24
#表示被容許鏈接該模塊的主機,能夠是IP或者網段,若是是多個,中間用空格隔開。

說明: 當設置了auth users和secrets file後,客戶端連服務端也須要用用戶名密碼了,若想在命令行中帶上密碼,能夠設定一個密碼文件「/etc/pass」,而後執行命令:「 rsync -avL test@192.168.180.134::test/test1/ /tmp/test8/ --password-file=/etc/pass」,其中/etc/pass內容就是一個密碼,權限要改成600(文件內容格式爲:「用戶名:密碼」)。node

啓動服務

開啓服務:
[root@yong-01 ~]# rsync --daemon

檢測服務狀態:
[root@yong-01 ~]#  ps aux |grep rsync
root      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@yong-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      1114/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1463/master         
tcp        0      0 192.168.180.134:873     0.0.0.0:*               LISTEN      2487/rsync          
tcp6       0      0 :::22                   :::*                    LISTEN      1114/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1463/master       

添加path的相應目錄:
[root@yong-01 ~]# mkdir /tmp/rsync
更改目錄權限:
[root@yong-01 ~]# chmod 777 /tmp/rsync

注: 在配置文件中設定path時注意所給予的權限,安全起見不要直接使用root目錄!!!
配置文件中「[]」爲模塊,裏面內容爲模塊名稱,該模塊表明的路徑即爲path指定的路徑。linux

使用服務進行同步

在客戶端進行同步:同步到服務端vim

[root@yong-02 ~]# rsync -avP /tmp/ipt.txt 192.168.180.134::test/test0515.txt
rsync: failed to connect to 192.168.180.134 (192.168.180.134): No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(122) [sender=3.0.9]
同步遇到的錯誤,沒有路由到主機

檢查端口873是不是通的:windows

telnet 192.168.180.134 873 (若是沒有telnet 須要安裝 yum install -y telnet)安全

端口仍是不通 繼續ping通說明網絡正常,要檢查iptables -nvL服務器

 

繼續檢查iptables -nvL ,停掉firewalld  systemctl stop firewalld 固然服務機上也需停掉這個firewalld網絡

到這一步就說明873端口通了 退出該命令時使用Ctrl+],而後輸入quit便可!session

[root@yong-02 ~]# telnet 192.168.180.134 873
Trying 192.168.180.134...
Connected to 192.168.180.134.
Escape character is '^]'.
@RSYNCD: 30.0

實驗: ssh

在客戶端進行同步:同步到服務端
[root@yong-02 ~]# rsync -avP /tmp/ipt.txt 192.168.180.134::test/test0515.txt
sending incremental file list
ipt.txt
         472 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/1)

sent 543 bytes  received 27 bytes  1140.00 bytes/sec
total size is 472  speedup is 0.83

將服務端數據同步到本機(客戶端):
[root@yong-02 ~]# rsync -avP 192.168.180.134::test/test0515.txt /tmp/test0515.txt 
receiving incremental file list
test0515.txt
         472 100%  460.94kB/s    0:00:00 (xfer#1, to-check=0/1)

sent 45 bytes  received 579 bytes  1248.00 bytes/sec
total size is 472  speedup is 0.76

[root@yong-02 ~]# ls /tmp/test0515.txt 
/tmp/test0515.txt

#######################################
在服務端查看同步結果:
[root@yong-01 ~]# ls /tmp/rsync/test0515.txt 
/tmp/rsync/test0515.txt

telnet命令

telnet命令用於登陸遠程主機,對遠程主機進行管理。telnet由於採用明文傳送報文,安全性很差,不少Linux服務器都不開放telnet服務,而改用更安全的ssh方式了。

rsync經過服務同步(下)

編輯rsync配置文件,將服務機端口改成port=8730

重啓rsync服務

安裝killall工具:「yum install -y psmisc」。

殺死全部rsync進程:
[root@yong-01 ~]# killall rsync

啓動:
[root@yong-01 ~]# rsync --daemon

檢測:
[root@yong-01 ~]# ps aux |grep rsync
root      2992  0.0  0.0 114652   528 ?        Ss   22:30   0:00 rsync --daemon
root      2994  0.0  0.0 112676   984 pts/0    R+   22:30   0:00 grep --color=auto rsync
[root@yong-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      1114/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1463/master         
tcp        0      0 192.168.180.134:8730    0.0.0.0:*               LISTEN      2992/rsync          
tcp6       0      0 :::22                   :::*                    LISTEN      1114/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1463/master

進行同步

[root@yong-02 ~]# rsync -avP /tmp/ipt.txt 192.168.180.134::test/test0515.txt
rsync: failed to connect to 192.168.180.134 (192.168.180.134): Connection refused (111)
rsync error: error in socket IO (code 10) at clientserver.c(122) [sender=3.0.9]

說明: 因未開放8730端口,因此此時同步數據會報錯!那麼如何進行同步呢?方法以下:加上--port 8730

[root@yong-02 ~]# rsync -avP /tmp/ipt.txt --port 8730 192.168.180.134::test/test0515.txt
sending incremental file list

sent 28 bytes  received 8 bytes  72.00 bytes/sec
total size is 472  speedup is 13.11

說明: 使用--port選項指定端口號。

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擴展:https://my.oschina.net/u/2000675/blog/908189

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是一款由GNU計劃開發的用於命令行終端切換的自由軟件。用戶能夠經過該軟件同時鏈接多個本地或遠程的命令行會話,並在其間自由切換。GNU Screen能夠看做是窗口管理器的命令行界面版本。它提供了統一的管理多個會話的界面和相應的功能。

安裝screen工具:yum install -y screen

  • 將一個任務放入後臺
# nohup command >[日誌文件] 2>[日誌文件] &

screen語法:

screen [option] [參數]

在每一個screen session 下,全部命令都以 ctrl+a(C-a) 開始:

Ctrl-a d -> detach,暫時離開當前session,將目前的 screen session (可能含有多個 windows) 丟到後臺執行,並會回到還沒進 screen 時的狀態,此時在 screen session 裏,每一個 window 內運行的 process (不管是前臺/後臺)都在繼續執行,即便 logout 也不影響。
  • 查看當前screen下的任務
[root@yong-01 ~]# screen -ls 
There is a screen on:
	3212.pts-0.yong-01	(Detached)
1 Socket in /var/run/screen/S-root.
  • 返回screen session
[root@yong-01 ~]# screen -r 3212(screen的id)
  • 終止screen:在screen session執行以下命令便可
[root@yong-01 ~]# exit
  • 爲screen指定做業名
[root@1 ~]# screen -S "test_screen"

說明: 這樣作的目的是方便區分每一個screen任務。

擴展:xargs命令

xargs命令是給其餘命令傳遞參數的一個過濾器,也是組合多個命令的一個工具。它擅長將標準輸入數據轉換成命令行參數,xargs可以處理管道或者stdin並將其轉換成特定命令的命令參數。xargs也能夠將單行或多行文本輸入轉換爲其餘格式,例如多行變單行,單行變多行。xargs的默認命令是echo,空格是默認定界符。這意味着經過管道傳遞給xargs的輸入將會包含換行和空白,不過經過xargs的處理,換行和空白將被空格取代。xargs是構建單行命令的重要組件之一。

xargs命令用法1

xargs用做替換工具,讀取輸入數據從新格式化後輸出。

  • 多行輸入單行輸出
[root@yong-01 ~]# cat test.txt 
1 2
3 4
a b 
c d 

[root@yong-01 ~]# cat test.txt |xargs
1 2 3 4 a b c d
  • xargs -n 指定每行輸出單元數量
[root@yong-01 ~]# cat test.txt |xargs -n4
1 2 3 4
a b c d
  • xargs -d 指定分隔符#
[root@yong-01 ~]# echo "test#test#test#test" | xargs -d# -n2
test test
test test

 擴展

1. Linux日誌文件總管logrotate http://linux.cn/article-4126-1.html
2. xargs用法詳解 http://blog.csdn.net/zhangfn2011/article/details/6776925

相關文章
相關標籤/搜索