rsync介紹html
rsync是一個同步工具,在平常的運維中常會用到。它能夠本地同步,也實現能夠遠程兩臺機器同步。node
好比有個需求:有A、B目錄兩個目錄,A目錄文件一直在不定時的增長,想要把A目錄裏面的數據拷貝到B目錄下去。而且要求每小時拷貝一次,若是用cp來實現只能覆蓋,而且浪費磁盤IO。這種狀況就可使用rsync,它能夠增量的同步。linux
rsync安裝shell
yum -y install rsync
vim
rsync命令格式安全
rsync [OPTION] … SRC DEST
//OPTION爲參數,SRC源,DEST目標服務器
rsync [OPTION] … SRC [user@]host:DEST
//遠程拷貝,若是不寫user就默認使用當前的用戶session
rsync [OPTION] … [user@]host:SRC DEST
// 反向拷貝,把遠程機器上的文件或目錄拷到本地架構
rsync [OPTION] … SRC [user@]host::DEST
// 多了:: ,後面在講運維
rsync [OPTION] … [user@]host::SRC DEST
rsync經常使用選項
/etc/passwd 拷貝到/tmp/目錄下而且更名爲1.txt
rsync -av /etc/passwd /tmp/1.txt
-a :包含-rtplgodD選項
-v:可視化顯示
遠程拷貝
rsync -av /etc/passwd root@47.106.84.56:/tmp/
rsync同步目錄
rsync -av /root/test/ /tmp/test_dest/
同步目錄時,文件結尾不能少了"/"
軟鏈接拷貝
加上-L 參數後,會把參數 -l 的含義給覆蓋掉。-L會把軟連接所指向的源文件給拷貝過去
rsync -avL /root/test/ /tmp/test_dest/
刪除目標中源文件中沒有的內容
rsync -av --delete /root/test/ /tmp/test_dest/
test_dest目標目錄中有666.txt,可是源目錄test目錄中沒有這個文件
執行完同步後,666.txt被刪除
過濾文件同步
過濾掉全部.txt文件
rsync -av --exclude "*.txt" /root/test/ /tmp/test_dest/
也能夠支持多重多慮
rsync -avL --exclude "*.txt" --exclude="11*" /root/test/ /tmp/test_dest/
-P參數,詳細的顯示同步過程
rsync -avP /root/test/ /tmp/test_dest/
-u參數 ,目標中的文件比源新,則不一樣步
修改/tmp/test_dest/111.py文件
加上-u參數,再執行同步發現111.py並無被以前的文件覆蓋掉
rsync -avu /root/test/ /tmp/test_dest/
-z 參數,壓縮傳輸
若是傳輸文件比較大能夠加上這個參數
rsync -avz /root/test/ /tmp/test_dest/
ssh遠程同步條件
兩臺機器,能夠ping通 而且都安裝了rsrnc包
遠程同步示例
rsync -av /etc/passwd 193.112.38.222:/tmp/test222
193.112.38.222:是目標機器ip,輸入密碼就能夠同步了
將遠程機器上的文件拉取到本地
rsync -av 193.112.38.222:/tmp/test222 /tmp/test333
指定端口進行傳輸
若是對方機器不是默認的22端口,能夠-e指定端口進行傳輸
rsync -av -e "ssh -p 22" /etc/passwd 193.112.38.222:/tmp/test222
rsync經過服務的方式同步,首先須要開啓一個服務。它是C/S架構,開啓rsync daemo服務,默認端口是873。daemon模式是守護進程。
開啓服務後,客戶端就能夠經過873端口進行通訊。
服務配置文件:
配置文件地址是 /etc/rsyncd.conf。(也能夠更改路徑,可是在更改路徑後,就須要在啓動服務的時候,去rsync --daemon//conf=後跟路徑)
配置文件樣例
port=873 log file=/var/log/rsync.log pid file=/var/run/rsyncd.pid address=172.18.11.153 [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.133.132 1.1.1.1 2.2.2.2 192.168.133.0/24
配置文件解釋:
參數名 | 解釋 |
---|---|
port | 指定rsync服務端口,默認是873 |
log file | 指定日誌文件 |
pid file | 指定pid文件 |
address | 指定rsync啓動服務的ip,若有多個ip就能夠指定其中一個ip啓動。若是不指定改參數,默認是所有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 --daemon
檢查服務
netstat -lntp |grep 873
ps -aux |grep rsync
測試
rsync -av /tem/test11111.txt 172.18.11.153::test/tmp/test2222.txt
::爲模塊名,也就是配置文件中[test]
rsync傳輸時設置用戶名密碼
一、配置文件中指定用戶名和密碼文件
auth users=test secrets file=/etc/rsyncd.passwd
二、編輯/etc/rsyncd.passwd
密碼格式爲:test:wxy123
修改權限爲600
chmod 600 /etc/rsyncd.passwd
三、測試
rsync -avP /tmp/test/ test@172.18.11.153::test/
客戶端設置密碼文件
在rsync傳輸文件的時候,在寫shell腳本輸入密碼很差,這時候在客戶端也定義一個密碼文件
一、設置密碼文件
vim /etc/rsync_pass.txt
格式:客戶端只寫一個密碼便可
並修改權限爲600
chmod 600 /etc/rsync_pass.txt
二、測試
rsync -avP /tmp/test/ --password-file=/etc/rsync_pass.txt test@172.18.11.153::test/
這裏須要加上--password-file=/etc/rsync_pass.txt
系統日誌
/var/log/messages 是linux的系統總日誌,
系統中日誌會有自動切割機制,增加到必定級別就會自動切割:
切割機制的配置文件
/etc/logrotate.conf
參數解釋:
weekly //每週切割一次
rotate 4 //4週一次輪換
create //建立新的
compress //是否須要壓縮,默認是註釋的
/etc/logrotate.d/syslog 這個會給cron,maillog,messages,secure,spooler這幾個日誌進行切割
Linux系統有一個特色,一個服務寫一個文件的時候,並非按照文件名去寫的,而是根據inode來寫的
dmesg命令
一、dmesg會把系統的硬件日誌列出來
二、這個個日誌是保存在內存中的,並非一個文件
三、dmesg -c 清空當前日誌
四、/var/log/dmesg這個日誌文件和dmesg命令沒喲任何關聯,它是系統啓動的一個日誌
last命令
一、last命令是調用的/var/log/wtmp 日誌
二、日誌內容包含:用戶、登陸終端、源IP、時間、登陸時長
三、/var/log/wtmp日誌是-個二進制文件,不能直接查看的,只能用last命令去查看
lastb 命令查看登陸失敗的用戶
一、lastb命令是調用的/var/log/btmp 日誌
二、日誌內容包含:用戶、登陸終端、登陸IP、時間、登陸時長
三、/var/log/btmp日誌也是-個二進制文件,不能直接查看的,只能用lastb命令去查看
四、若是服務器被暴力登陸(被黑),這個日誌通常會有不少條記錄
安全日誌
/var/log/secure 這個日誌會記錄系統的登陸信息,成功失敗都會記錄。若是系統有可能被暴力能夠查看這個日誌
screen它是虛擬的一個屏幕,也能夠理解爲一個虛擬的終端。
使用需求
需求:執行一個腳本,時間很長 ,而且這個腳本會輸出一些信息。要保證這個腳本不能中斷。
解決方法:
一、nohup command & 把腳本丟到後臺,並加一個日誌。可是這樣沒辦法實時的查看輸出信息
二、screen工具,能夠把要執行的命令,放到這個終端裏,而後在退出pts/0以前,能夠把screen丟到後臺去,隨時用, 隨時查看 。
screen安裝
yum install -y screen
使用
安裝完成後直接輸入screen命令,會進入到screen,進入到一個窗口,這個窗口就是一個虛擬終端
虛擬終端,執行vmstat 1命令,而後 ctrl+a鍵 再按 d鍵 ,就把screen丟到後臺了
執行screen -ls 命令,列出當前全部的session
執行screen -r 再加查看到的id 命令,再回到虛擬終端
screen -r 1558
想要退出screen ,直接exit便可
建立一個自定義名字的screen,加上-S選項,能夠指定自定義的名字
screen -S wxy
日誌切割logrotate詳解:https://linux.cn/article-4126-1.html