rsync工具介紹
- rsync 是一個同步工具
- 能夠用來備份數據,本機備份,或者遠程備份都行
- 功能相似 cp 命令
- 案例,要把 a目錄 的文件拷貝到 b目錄
- 每一個小時拷貝一次
- a目錄是一個不斷增長新文件的目錄
- 若是使用 cp 命令來拷貝,有兩種方法
- 第一種方法是,每一個小時,使用cp把a目錄整個拷貝一遍
- 第二種方法是,把a目錄裏面,每一個小時內新增的文件cp到b目錄
- 目錄內容少的時候還沒問題,一旦目錄內容多了起來
- 第一種方法,整個目錄複製一遍太耗費時間
- 第二種方法,找出新增文件複製過去
- 可是文件多了之後,是很難找出哪些文件是新增的,哪些不是,難以辨認
- rsync 的好處是,能夠自動對比兩個目錄內文件的差異
- 把a目錄有,b目錄沒有的文件拷貝過去
- 或者把a目錄時間變動了,b目錄時間沒有變動的同名文件,拷貝過去
- 時間變動說明被修改了,被修改了的文件,也會被拷貝到 b目錄
- 這樣就能夠很方便的讓兩個目錄內的內容同步
- 比cp命令方便,也節省時間
- rsync 也可讓不一樣機器內的文件進行同步
- 也就是遠程同步
- 如圖,rsync -av /etc/passwd /tmp/1.txt
- 命令的意思是,把 /etc/passwd 這個文件複製到 /tmp/ 目錄下面
- 而且更名爲 1.txt
- 參數 a 的做用比較複雜,後面再說,參數 v 就是可視化的意思
- 參數 v 能夠看到拷貝的過程,就是拷貝過程系統會有信息輸出
- 好比上圖,執行命令後,下面出現的跟文件有關的信息
- 若是不使用 v 參數,這些信息就不會顯示
- 如圖,rsync -av /etc/passwd root@192.168.133.130:/tmp/1.txt
- 這是遠程同步的命令
- 意思是把 /etc/passwd 文件 遠程複製到 ip爲192.168.133.130的另一臺機器上
- root@ 就是複製到這臺機器的 root 用戶下面
- ip後面接冒號 : + 複製的文件路徑
- 複製的文件路徑是 /tmp/ ,而後把文件更名爲 1.txt
- 下面是一些文件傳輸的信息
- 這樣就遠程同步了 passwd文件給 192.168.133.130 的 root用戶
- 存放的路徑是 /tmp/ ,而且文件重命名爲 1.txt
- 如圖,還能夠不寫 對方的用戶名
- 若是不寫對方的用戶名,則默認是當前終端的用戶
- 例如,我如今使用 root用戶執行 這條命令
- 我不寫對方的用戶名,則默認發送給對方的 root用戶
- 若是我如今使用 cat用戶執行這條命令
- 則默認發送給對方的 cat用戶,可是若是對方沒有 cat用戶
- 那麼就會發生錯誤
- 上圖是 rsync 的一些格式
- 以 rsync 開頭,[OPTION] 是rsync的一些選項
- SRC 表明源文件或目錄
- DEST 表明目標文件或目錄
- 這個格式就是把 源目錄或文件 同步到 目標目錄或文件
- 這個格式就是把 源目錄或文件 遠程同步到 目標地址的目錄或文件
- 這個格式裏面,user@ 能夠不寫,若是不寫
- 默認用戶就是當前終端的用戶名,若是目標機器不存在當前終端的用戶名
- 那麼同步會發生錯誤
- 這個格式是把 遠程目標文件或目錄 與 本機目錄或文件的位置 對調
- 先寫 遠程目標文件或目錄,再寫 本機目錄或文件
- 意思是把 遠程目標文件或目錄 同步到 本機的文件或目錄
rsync經常使用選項
- 如圖,rsync 的 -a 選項,實際上包含了 - r t p l g o D 這麼多的選項
- 因此通常使用的時候,使用 -a 選項就足夠了
- a 選項裏面的 r 選項表示拷貝目錄的意思
- cp命令裏面,若是不使用 -r 選項,就只能拷貝文件,不能拷貝目錄
- 加上 -r 就既能夠拷貝文件,也能夠拷貝目錄
- a 選項裏面的 r 選項也是同樣的意思,可讓rsync命令
- 既能夠同步目錄,也能夠同步文件,否則的話只能同步文件了
- v 選項表示可視化,使用 -v 選項
- 可讓rsync命令同步的時候,顯示一些信息,看到同步的過程
- 選項 -l 和 -L
- 選項 l 表示同步的時候,軟連接文件也會一塊兒同步
- 若是不使用 l 選項,軟連接文件就不會一塊兒同步
- 可是有一個問題,軟連接文件通常都是指向本機另一個地址的文件的
- 可是同步到另一臺機器後,這個軟連接文件指向的那個地址的文件不必定存在
- 這樣,這個軟連接文件就會變成損壞的狀態
- 若是使用 -L 選項的話
- rsync 同步的時候,就會把軟連接文件指向的源文件也一塊兒同步到另外一臺機器上
- 選項 -p 是保持文件的權限屬性
- 就是 rwx 權限,在本機是怎樣的權限
- 同步到另外一臺機器就是怎樣的權限
- 若是不使用這個選項,同一個文件同步到另外一臺機器
- 可能會出現不同的權限
- 選項 -o 是保持文件的屬主
- 意思是,好比一個文件的全部者在本機是 xyz
- 同步到另一臺機器上時,全部者也仍然是 xyz
- 若是另一臺機器上面沒有 xyz 這個用戶的時候
- 全部者就會使用 xyz 的 uid
- 好比本機用戶 xyz 的uid 是 1008
- 同步一個屬於 xyz用戶的文件到另一臺機器
- 可是另一臺機器沒有 xyz這個用戶
- 那麼這個同步過去的文件的全部者就是 1008 這個uid
- 而不是某個具體的用戶名稱
- 選項 -g 保持文件屬組
- 意思是同步到另外一臺機器的文件或目錄
- 所屬組不變,跟 -o 選項差很少
- 選項 -t 保持文件的時間屬性
- 如字面意思,文件在本機的 mtime,ctime,atime
- 同步到另外一臺機器的時候,這三個時間屬性不變
- 選項 --delte 意思是把目標目錄中,源目錄中沒有的文件刪除
- 舉例說明,如今有兩個目錄 a ,b
- 目錄a 裏面有 1,2,3 這三個文件
- 目錄b 裏面有 4,5 這兩個文件
- 個人目的是把 目錄a 的內容同步到 目錄b 裏面去
- 讓 目錄a 與 目錄b 的內容保持一致
- 若是不使用 --delte選項直接同步 目錄a 到 目錄b
- 那麼就會把 1,2,3 這三個文件複製到 目錄b 裏面去
- 那麼 目錄b 的內容就變成了 1,2,3,4,5
- 這顯然不符合要求
- 若是在同步的時候,加上 --delte 選項的話
- rsync 命令就會把 目錄a中沒有,目錄b中有的文件刪除
- 好比 4,5 這兩個文件在目錄a中是不存在的
- 選項 --delte 就會把 4,5 刪除
- 這樣就能夠保證 目錄a 和 目錄b 裏面的內容是一致的
- 選項 --exclude 能夠過濾文件或者目錄
- 好比有時候,同步一個程序到另一臺電腦
- 可是這個程序裏面有一個日誌文件,或者放日誌文件的目錄
- 可是本機程序的日誌文件或者目錄,在另一臺機器上沒什麼用處
- 同步過去既浪費時間也浪費存儲空間,就沒有必要了
- 這種時候可使用 --exclude 選項來把 文件或目錄過濾掉
- 好比 --exclude "logs" 就能夠把名稱包含 logs 的文件或者目錄過濾掉,不一樣步
- 選項 -P (大寫p) 也是能夠顯示同步過程的信息
- 可是比 -v 顯示的信息更加的詳細
- 選項 -u 是update的簡寫,意思是 若是目標目錄的同名文件比源目錄中的文件新,就不一樣步
- 新 通常是指 mtime,一個文件若是被修改編輯,那麼mtime就會改變
- 舉例,a目錄 與 b目錄 是常常進行同步的兩個目錄
- 那麼按道理 a目錄的內容 跟b目錄的內容 應該是一致的
- 可是由於某些緣由,b目錄中的某個文件須要修改一下才行
- 而後操做人員就直接修改了 b目錄中的某個文件
- 這樣這個文件的 mtime 就比 a目錄中的同名文件的 mtime 要新了
- 而後又須要把 a目錄 同步到 b目錄
- 可是並不但願 以前在b目錄中修改過的文件 被a目錄中舊的同名文件替換掉
- 這時候就可使用 -u 選項
- 由於 b目錄的文件修改以後的mtime 比 a目錄同名文件要新
- 選項 u 可使 源目錄中 mtime 不夠新的同名文件不一樣步到目標目錄
- 選項 -z 可讓同步傳輸的文件進行壓縮處理
- 就是數據在傳輸前壓縮一下,傳輸過去後會被解壓縮
- 這樣能夠節省一些帶寬
- 上圖是一個使用 -L 的案例
- rsync -avL /root/111/ /tmp/111_dest/
- 命令的意思是把 /root/111/ 目錄 同步到 /tmp/111_dest/ 目錄
- 如圖查看 /root/111/ 目錄下的文件,能夠看到,aming3 是一個軟連接文件
- 實際的文件地址是 /tmp/aming2
- 如圖,執行同步命令以後,查看 /tmp/111_dest/ 目錄下的文件
- 能夠看到 aming3 再也不是一個軟連接文件了,而是變成了真正的文件
- 如圖,cat 查看 aming3 的內容,發現 aming3 的內容與 aming2的內容是一致的
- 選項 -L 的做用是把軟連接文件的源文件也一塊兒拷貝
- 從這個案例能夠知道,L 選項的實際做用效果
- 是把原來的軟連接變成了源文件
- 實際就是把源文件複製一份,可是文件名稱改成軟連接的名稱,而後同步過去
- 這就是 -L 的實際做用效果
- 選項 -a 裏面包含了選項 -l , l 是把軟連接文件也同步過去的意思
- 當 -l 與 -L 同時存在的時候, -L 的效果就把 -l 的效果覆蓋掉了
- 上圖能夠看到 111/ 目錄下的文件
- 上圖能夠看到 /tmp/111_dest/ 目錄下的文件,跟 111/ 目錄下是一致的
- 而後 touch 1個 new.txt 文件在 /tmp/111_dest/ 目錄下面
- 這樣 /tmp/111_dest/ 目錄 就比 111/ 目錄要多一個 new.txt 文件了
- 上圖是一個使用 --delete 選項的案例
- rsync -avL --delete /root/111/ /tmp/111_dest/
- 就是把 111/ 目錄的文件同步到 111_dest/ 目錄去
- 若是 111_dest 目錄存在一些文件是 111/ 目錄沒有的
- 就把這些文件刪除
- 剛纔在 111_dest/ 目錄新建了 new.txt文件,這是 111/ 目錄沒有的文件
- 因此在同步 111/ 目錄到 111_dest/ 目錄的時候,就會把 new.txt 刪除
- 上圖能夠看到,信息顯示 deleting new.txt
- 查看目錄,new.txt 文件也被刪除了
- 這就是 --delete 選項的做用
- 這是一個選項 --exclude 的案例
- rsync -avL --exclude "*.txt" /root/111/ /tmp/111_dest/
- 這樣就把 111/ 目錄中,除去 .txt 後綴的文件外,都同步到 111_dest/ 目錄了
- 選項 --exclude 是過濾的意思, *.txt 就是以 .txt 結尾的文件名稱
- 符號 * 是通配符,表明任意長度字符
- 如圖,選項 --exclude 支持寫多個
- 上圖寫了 2 個 --exclude 選項,過濾了 .txt結尾 和 包含aming 的名稱的文件
- 這樣就能夠同時過濾多個條件
- 如圖,這是一個選項 -P 的案例
- 選項 -P 能夠顯示比 -v 更詳細的同步信息
- 圖中能夠看到有 傳輸的百分比,傳輸速度,時間等等信息,比 -v 詳細的多
- 上圖是選項 u 的一個案例
- 111/ 目錄裏面的 4913 文件 與 111_dest/ 目錄下的 4913 文件的內容不一樣
- 111_dest/ 目錄的 4913 文件添加了新的內容
- 因此 111_dest/ 目錄的 4913 文件的 mtime 比較新
- 執行 rsync -avpu /root/111/ /tmp/111_dest/
- 由於有 u 選項, 111/ 目錄的 4913 的 mtime
- 比 /tmp/111_dest/ 目錄的 4913 的 mtime 要舊
- 因此並不會被同步過去
- 選項 u 就是若是目標目錄的同名文件 mtime 比較新
- 就不會把源目錄的同名舊文件同步過去
- 下面分別查看兩個目錄的 4913 文件
- 能夠看到,兩個 4913 的內容是不一樣的
- 若是把舊文件同步過去的話,兩個文件的內容應該是相同的
- 如圖,這是選項 z 的案例,這裏看不出什麼效果
- 選項z 可把傳輸的文件進行壓縮,這樣能夠節省帶寬
- 若是要傳輸的文件量很大的話,使用 z 選項效果就比較明顯
rsync經過ssh同步
- 如今在 aming01 虛擬機上面使用 ssh 同步
- rsync /etc/passwd 192.168.133.132:/tmp/aming.txt
- 意思是把本機的 passwd 文件同步到192.168.133.132這臺機器上去
- 存放在192.168.133.132機器上面的 /tmp/ 目錄裏,文件重命名爲 aming.txt
- 如圖,傳輸過程發現錯誤,bash: rsync: 未找到命令
- 這個錯誤的意思是 192.168.133.132這臺機器上面沒有 rsync 命令存在
- 這說明對面機器沒有安裝 rsync 包
- 經過 ssh 同步的時候,雙方機器都要安裝 rsync 包才行
- 如圖,使用 yum install -y rsync 安裝 rsync 包
- 如圖,安裝完包,從新同步一下
- 這些命令後,須要輸入密碼,密碼是對方機器的root密碼
- 輸入密碼回車後,傳輸完成,此次沒有報錯了
- 如圖,除了本機同步別的機器外,還可讓別的機器同步本機
- 本機同步別的機器叫作 推文件,就是把本機文件推出去
- 別的機器同步本機叫作 拉文件,就是把遠程的文件拉過來
- rsync -avP 192.168.133.132:/tmp/aming.txt /tmp/123.txt
- 經過把遠程機器的ip地址文件地址 與 本機文件地址 反着寫
- 就是把 本機文件地址寫在後面,這樣就能夠把 遠程的文件 拉到本機
- 這裏命令的意思是從 192.168.133.132機器,把/tmp/aming.txt文件
- 同步到本機的 /tmp/ 目錄,並重命名文件爲 123.txt
- 從遠程拉文件過來,也是須要輸入對方機器的root密碼的
- 如圖,這是指定端口同步數據
- 由於有時候對方機器的端口並非默認的端口22,也多是別的端口
- 這種時候就須要設置指定的端口來鏈接對方機器
- rsync -avP -e "ssh -p 22" /etc/passwd 192.168.133.132:/tmp/aming.txt
- 這條命令裏面, -e "ssh -p 22" 就是指定端口的選項
- 這裏指定了 22 端口來鏈接
- "ssh -p 22" 是一條命令, -e 選項就是能夠處理這條命令的選項
- 除了這種方法外
- 如圖,能夠直接使用 ssh -p 22 192.168.133.132 登陸對方機器
- 這個命令能夠指定端口登陸對方機器,要輸入對方root密碼
- 登陸進去後,就不須要指定端口同步,直接在對方機器這些同步命令
- 把對方機器的文件拉到本機
rsync經過服務同步
- rsync 有兩種同步方式,一種是經過ssh
- 另一種是經過 服務 的方式來同步
- 經過服務的方式同步,首先須要開啓一個服務
- 服務的架構是cs架構,分爲客戶端,服務端
- 服務端要開啓 rsync 服務,還要監聽一個端口,默認是873
- 不過這個端口能夠自定義
- 開啓服務後,客戶端就能夠經過這個端口跟服務端通訊
- 啓動服務以前,須要先編輯配置文件
- /etc/rsyncd.conf 是默認的配置文件路徑
- 使用默認配置文件路徑的話,編輯好後,直接啓動就行了
- 配置文件也能夠放在別的路徑,可是若是放在別的路徑
- 啓動服務的時候,就須要加一個指定配置文件路徑的選項
- 指定配置文件路徑後,系統就會自動到這個路徑去加載配置文件
- 因此通常來講仍是使用默認配置文件路徑最方便
port=873
log file=/var/log/rsync.log
pid file=/var/run/rsyncd.pid
address=192.168.64.128
[test]
path=/root/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.64.130
- 上面是 rsyncd.conf 配置文件的模板
- 用 vi 打開 /etc/rsyncd.conf 配置文件
- 如圖,打開rsyncd.conf文件能夠看到裏面有不少註釋的信息
- 這些註釋的信息也是模板信息
- 這裏另起一行,把上面的模板代碼複製到註釋信息的下面,而後保存退出
- 執行上圖命令 rsync --daemon 啓動服務
- 使用 pa aux |grep rsync 查看 rsync 服務是否啓動
- 這裏看到已經啓動了
- 使用 netstat -lntp 查看監聽的端口
- 能夠看到,192.168.133.130:873 這個ip地址的873端口被監聽了
- 這個ip地址是在配置文件裏面指定的,若是不指定ip地址
- 這裏的地址就會變成 0.0.0.0 意思是全網段的873端口都會被監聽
- 可是咱們只須要監聽一臺機器的873端口,而不是全部機器
- 這樣服務端就算完成了
- 還有一個問題,上圖配置文件裏面的 path 原本的路徑是 /root/rsync
- 可是這樣不安全,如今修改成 /tmp/rsync 而後保存退出
- 由於 /tmp/rsync 目錄不存在,因此須要 mkdir 建立一下
- 目錄 /tmp/rsync 修改權限爲 777 ,這樣方便測試
- 上圖是一個路由失敗的案例
- 通常遇到這種狀況,能夠查看一下端口狀況
- 上圖是安裝 telnet 工具包
- 上圖是使用 telnet 測試873端口是否接通
- 這裏說明端口不通
- 使用命令 iptables -nvL 查看防火牆
- 如圖,發現 firewalld 打開了,多是firewalld 阻止了同步鏈接
- 可使用 systemctl stop firewalld 關閉firewalld 防火牆
- 再使用 iptables -nvL 查看狀況
- 把兩臺機器的 firewalld 都關閉,再測試端口,如圖,測試成功
- 查看完端口狀況,想退出的話使用 ctrl + ](右方括號) 回車
- 而後輸入命令 quit 回車,能夠看到 connection closed 就表示退出了
- 如圖,同步的時候須要輸入用戶名跟密碼
- 這裏把這兩行註釋掉,同步的時候就不須要輸入用戶名跟密碼了
- auth users=test 這一行是定義用戶名,用戶名就是test
- secrets file=/etc/rsyncd.passwd 這一行是定義密碼
- /etc/rsyncd.passwd 就是密碼文件的路徑
- 如今這兩行被註釋掉,保存退出,再同步就不須要輸入用戶名密碼了
- 如圖, 192.168.133.130::test/aming-02.txt 就是目標目錄
- 這裏須要使用兩個冒號 :: 後面跟模塊名稱 test 而後是路徑信息
- 經過服務方式同步,這裏都是使用兩個冒號 :: ,看到這個就知道是服務同步
- test是在服務端配置文件裏面定義的模塊
- 模塊實際上就是一個目錄,配置文件裏面也定義了這個模塊的目錄路徑
- 這是 rsync 服務的一種結構
- 使用服務同步,指定一個模塊,就會把內容同步到這個模塊目錄裏面
- 好比這裏就會把 aming.txt 傳輸到 test模塊對應的目錄裏面
- 後面沒有指定路徑,若是有指定其它目錄的話,會在test對應目錄裏面建立
- 這裏指定了文件名稱,那麼 aming.txt傳輸到test對應目錄後就會被重命名爲aming-02.txt
- 如圖,這是另一個案例,若是沒有把配置文件裏面的用戶名和密碼註釋掉的話
- 同步命令就須要輸入
- 能夠看到, test@192.168.64.128 這裏的 test就是配置文件定義的用戶名稱
- test@ 就是規定的格式,這樣就算輸入了用戶名
- 下面 password 要求輸入用戶名對應的密碼
- 按照模板 密碼 保存在 /etc/rsyncd.passwd 文件裏面
- 可是實際上這個文件是不存在的,須要本身建立
- 那麼就 touch /etc/rsyncd.passwd 而後內容也須要本身編輯
- 內容的格式就是 用戶名:密碼 這樣的格式
- 好比如今有一個用戶名是 test ,對應的密碼自定義爲 1234
- 那麼編輯內容就輸入
test:1234
而後保存退出就能夠了
- 如圖,把 192.168.133.130地址的機器,test/ 模塊整個目錄,同步到本機的 /tmp/test/目錄
- 下面顯示信息,出現錯誤,/12.txt 沒有傳輸過來
- 到 192.168.133.130 機器查看test模塊內的文件
- 發現 12.txt 是 軟連接文件
- 若是直接同步,通常是沒有問題的
- 可是若是使用 -L 選項的話,就會出現問題
- 由於 L 選項會把軟連接文件的源文件同步過去
- 可是 服務端配置文件裏面的 chroot 的值是true,就不能把模塊目錄之外的文件同步過去
- 如圖,use chroot=true ,應該修改成 use chroot=false
- 這樣在使用 -L 選項的時候就不會出現錯誤
- use chroot=true 的效果是把 模塊的目錄當作根目錄
- 因此 模塊目錄之外的文件就不能被同步
- 而這個軟連接的源文件並不在模塊目錄內,而是在外面
- 因此,chroot=true的時候,就不能把軟連接的源文件傳輸過去
- 選項 -L 執行失敗,出現錯誤
- 修改 chroot 的值,不須要重啓服務也會生效
- 若是修改同步端口號的話,就須要重啓一下服務才能生效
- 如圖,killall rsync 就是把rsync服務kill掉
- 而後使用 rsync --daemon 從新啓動服務
- 由於更改端口號的話,就須要關閉服務,從新啓動,纔會加載新的端口號
- 更改端口號以後,執行同步命令,系統報錯
- 這是由於,默認的端口號就是 873 端口,而如今更改了端口號
- 那麼在執行同步命令的時候就須要指定更改的端口號才能同步成功
- rsync -avLP --port 8730 192.168.133.130::test/ /tmptest/
- 這裏 --port 就是指定端口號的選項,後面接端口號 8730
- 上圖是配置文件裏面的選項的解釋
- read only 決定了其它機器是否能夠上傳數據到服務器
- true 就是不能夠上傳,false就是能夠上傳數據,通常來講都是用 false
- 上圖是 list 的做用
- 使用命令 rsync --port=8730 192.168.133.130::
- 雙冒號 :: 後面不加任何模塊名稱
- list的值若是爲true,那麼下面就會返回該機器的全部模塊名稱
- 能夠看到,下面出現test,表示該機器目前只有一個 test 模塊
- 把配置文件 list 的值改成 false,而後再執行一次上圖命令
- 能夠看到,沒有任何信息返回,就是不會列出模塊名稱的列表
- 這就是 list 的做用
- 這個設置的做用主要是爲了安全考慮,防止別人得到服務器的模塊名稱列表
- 若是別人得到服務器模塊名稱列表,又沒有限制特定ip才能夠訪問,或者別的安全措施
- 那麼任何人均可以上傳數據到服務器裏面,若是有人上傳病毒之類的就很差了
- 設置list讓別人沒法或者模塊名稱列表就能夠有效預防別人上傳隨意上傳數據到服務器
- 如圖,配置文件的 uid ,gid 表示這個模塊同步的用戶權限
- 就是這個模塊讀寫文件的權限,這裏修改成 nobody
- nobody是一個權限很低的用戶
- 如圖,從本機推送/tmp/test/目錄到 192.168.133.130機器的 test模塊目錄
- 由於 test模塊的用戶權限是 nobody,權限很低,不能讀寫目錄,因此推送失敗
- 從新修改 uid,gid 爲 root,這樣test模塊就擁有root權限了
- 讀寫文件或者目錄擁有root權限,那麼基本能夠讀寫任何文件目錄都不會失敗了
- 如圖,test模塊有root權限後,再執行命令
- 就沒有錯誤信息了
- 配置文件裏面,有這兩行信息,這是用來定義用戶名跟密碼的
- 這兩行信息也能夠不寫,這樣同步的時候就不須要輸入用戶名跟密碼了
- 不過爲了安全,通常來講仍是要設置一下
- 這裏設置了用戶名跟密碼後,還須要在服務端建立一個密碼文件
- 位置就在 /etc/ 目錄下, 名稱爲 rsyncd.passwd
- 這個是默認的路徑跟文件名稱,也能夠更改成別的路徑文件名稱
- 在密碼路徑那裏設置正確的路徑文件名稱就行了
- 假設用戶名爲 tom 密碼爲 123
- rsyncd.passwd 裏面就寫入 tom:123 這樣的信息
- 這樣就算把 用戶名密碼登記在密碼文件裏面了
- 如圖,若是以爲同步的時候,輸入密碼太麻煩,能夠在客戶端也創建一個密碼文件
- 而後在同步命令中使用密碼文件,這樣就會自動輸入文件中的密碼,不須要手動輸入
- 圖中,--password-file 就是使用密碼文件的選項
- 後面 /etc/rsync_pass.txt 就是密碼文件的路徑
- 可是服務端和客戶端的密碼文件內容是不一樣的
- 服務端的內容是 tom:123 這樣的用戶名對應密碼
- 客戶端的內容就寫 123 就這樣單純寫密碼進去就能夠了,不須要寫用戶名
- 若是寫了用戶名反而出錯
- 密碼文件的權限應該配置爲 600
- 如圖,hosts allow 是配置文件中,容許哪些 ip 鏈接到服務端的設置
- 這裏設置了 192.168.133.132 就表示只有這個 ip能夠鏈接到服務端
- 若是要容許多個ip 能夠按照這個格式 1.1.1.1 2.2.2.2 來寫
- 就是用 空格作分隔,後面接着寫其它ip
- 或者直接寫 192.168.133.0/24 這個網段,就能夠容許這個網段的ip鏈接服務端
linux 系統日誌
- 常常遇到一些故障,除了看錯誤信息以外,還能夠查看系統日誌
- 好比有一些服務啓動不了之類的,沒有任何錯誤信息提示
- 這時候能夠查看系統日誌,日誌都有記錄啓動不了的信息之類的
- 也就是日誌會記錄不少不會在操做時提示的信息
- 經過查看這些信息可以更好的分析故障緣由
- 日誌 /var/log/messages 是linux系統總的日誌
- 除了某些服務定義了單獨的日誌文件,否則的話
- 全部的日誌信息基本上都記錄在 /var/log/messages 文件裏面
- 這個日誌就是系統日誌
- 查看 messages日誌信息
- 這個日誌文件,系統會不斷的往裏面寫入日誌信息
- 隨着時間增長,日誌文件會不斷的增大
- 因此係統有一個日誌切割機制,日誌文件增加到必定程度就會被切割
- 如圖,查看 /var/log/ 目錄下面名稱以 messages開頭的文件
- 發現,除了messages文件之外,還有另外4個格式爲 messages-日期 的文件
- 這些就是從messages文件切割下來的文件
- 都是系統自動切割的
- 系統裏面有一個服務叫作 logrotate ,這個服務就是用來自動切割日誌文件的
- logrotate服務有一個配置文件,叫作 logrotate.comf
- cat 查看 /etc/logrotate.conf 配置文件的內容
- 如圖,看配置文件裏面的內容,帶 # 的是註釋說明
- 第一行 see "man logrotate" for details
- 意思是使用 man logrotate 命令能夠查看詳細信息
- 而後第一行沒有 # 號的內容是 weekly
- 由於 weekly 沒有#,表這是會被程序執行的命令
- weekly 意思是每週切割一次
- 第二個命令, rotate 4 意思是總共切割四個
- 通常來講,是每週切割一次,一個月切割4次,保留4個文件
- 不過機器可能不是每週都開機,因此時間上也可能會有跳躍
- 反正 rotate 4 就是切割4個的意思
- 若是切割了 第五個,會把前面的刪除,總之最終只保留4個
- 第三個命令是 create 意思是切割日誌文件後,建立新的文件
- 應該是新建一個文件,切割的內容放入新建的文件裏面的意思
- 第四個命令是 dateext 意思是文件後綴名格式
- dateext == date ext 其實就是日期的意思
- 如圖,能夠看到,切割文件的後綴名都是在 messages 後面加上 -20131013 之類的日期
- dateext就是指定了建立的切割日誌文件的後綴名是這種格式
- 第五個 compress 是被註釋掉了,意思是是否要壓縮
- 這裏註釋掉了,意思就是切割文件不壓縮
- 若是把註釋符號 # 去掉,讓 compress 生效
- 那麼切割的日誌文件就會被壓縮,這樣能夠節省空間
- 有須要的話能夠這樣作,可是壓縮後不方便查看
- 第六個 include /etc/logrotate.d 意思是包含這個目錄
- 這個目錄下面還有一些配置文件存在
- 第七個 /var/log/wtmp 和 第八個 /var/log/btmp
- 這兩個也是日誌文件,寫在這裏表示服務也會對這兩個日誌文件進行切割
- 大括號 {} 裏面的內容就是對這兩個日誌文件進行切割的方式
- monthly 意思是每月切割一次
- rotate 1 意思是隻切割 1個日誌文件,好比下個月切割了一個日誌
- 就會把上個月的刪除,總之只保留 1個切割文件
- create 0600 root utmp 意思是建立切割文件的權限設置
- 新建的切割日誌文件的權限是 0600,全部者是 root,所屬組是 utmp
- 查看 /etc/logrotate.d 目錄能夠看到有一些配置文件在裏面
- cat 查看 syslog 配置文件內容
- 能夠看到 /var/log/cron,/var/log/maillog,/var/log/messages 等信息
- 系統服務會對什麼文件進行日誌切割就是在這裏定義的
- 系統服務就會對這裏設置的這些文件進行切割的操做
- 這裏定義了 /var/log/messages ,因此rotate服務會對這個文件進行操做
- 系統切割了日誌文件之後,如何肯定要向哪一個日誌文件寫入新的內容呢?
- 上圖的 腳本就是系統如何判斷應該向哪一個日誌文件寫入信息
- linux系統的服務寫一個文件的時候,是按照文件句柄來寫的,而不是按照文件名稱
- 文件句柄也能夠理解爲 inode ,這是判斷文件惟一性的標識
- 因此日誌文件被切割後,系統新建一個 /var/log/messages 文件
- 並不會自動的把新的日誌信息寫入 /var/log/messages 文件
- 由於這個 messages 文件是新建的,跟舊的 messages文件並非同一個文件
- 這時候須要從新啓動服務,讓服務從新加載 新的 messages 文件
- messages日誌文件是由 syslogd 服務決定的
- 因此須要 /bin/kill -HUP .... 從新加載這個服務
- 這樣服務就重新指定了新的 messages日誌文件,就會向新建的日誌文件寫入信息了
- 有一個命令 dmesg
- 輸入命令回車以後
- 如圖,執行命令後會出現不少信息
- 這些信息是電腦硬件的日誌信息
- 這些日誌信息是保存在內存中的,而不是在硬盤裏面,因此並非一個文件
- 系統的日誌信息主要是查看軟件的錯誤信息
- 使用 dmesg 能夠查看硬件的信息
- 也就是說,若是是網卡或者別的什麼硬件損壞致使的問題
- 能夠在這個硬件日誌信息裏面查找到相關信息
- 通常來講,有 error 關鍵字的都是硬件的錯誤信息
- 這樣能夠很快肯定是否是哪一個硬件出問題致使故障
- 使用命令 dmesg -c 就能夠把內存中的硬件日誌信息清空
- 系統裏面有一個 /var/log/dmesg 日誌文件
- 這個日誌文件是系統啓動信息的日誌文件
- 跟 dmesg 命令查看的硬件日誌文件沒有什麼關係
- 還要一個命令 last
- last 命令能夠查看 正確的登陸 日誌信息
- 這些登陸信息都是成功登陸的,不包括錯誤的登陸日誌信息
- last 命令調用的是 /var/log/wtmp 文件
- 這個文件是一個二進制文件,沒法用 cat 查看內容
- 只能使用 last 命令查看內容
- lastb 命令是跟 last 對應的一個命令
- last命令顯示的是正確登陸的日誌信息
- lastb 命令顯示的是 失敗的登陸 日誌信息
- 登陸失敗的信息 可使用 lastb 查看
- lastb 調用的是 /var/log/btmp 文件
- 這也是一個二進制文件,只能使用 lastb 查看內容
- 日誌文件 /var/log/secure 是安全日誌
- 這個日誌文件不是二進制的,因此能夠直接查看內容
- 這個日誌記錄了登陸驗證成功,或者失敗等等信息
- 若是有人暴力破解想登陸本機,這個日誌就會不斷的錄入相關的信息
- 不過,無論是成功仍是失敗的信息,都會記錄在這裏面
- 上圖是遠程鏈接這臺機器,登陸失敗,而後日誌信息就多了一條
- Failed password for root from.... 這樣的密碼錯誤登陸失敗的信息
- 總結,這幾個日誌信息就是大部分時候會用到的
screen工具
- 假設執行一個須要很長時間的腳本
- 好比須要執行一天一晚上的腳本
- 若是經過遠程終端來執行,萬一網絡斷開
- 腳本就終止了,又須要重頭開始
- 爲了不這個情況,能夠把這個任務放到後臺執行
- 這樣就算前臺的遠程終端網絡斷開,也不影響後臺的任務執行
- 而後還須要加一個日誌的輸出,方便後續查看任務的運行情況
- 使用 nohup 命令就能夠作到這一點
- 格式是 nohup + 命令+寫入日誌信息的文件 + &
- 可是任務放到後臺後,就沒法隨時查看任務執行狀況
- screen 就是一種虛擬終端
- 把要執行的任務放到 screen 終端裏面
- 而後把 screen 終端調到後臺去
- 須要查看任務執行狀況的時候
- 使用遠程鏈接來鏈接主機
- 再從主機後臺把 screen 終端調出來查看任務
- 這樣就算遠程終端斷開,也不會影響任務執行
- 首先,yum install -y screen 安裝screen包
- 輸入 screen 而後回車
- 如圖,使用screen命令後,就進入一個新的虛擬終端
- 可是看不出跟原來的終端有什麼區別
- 執行一個不斷運行的命令 vmstat 1 每秒都會出現新的信息
- 然是使用 ctrl+a (兩個鍵一塊兒按住),而後再按 d
- 如圖,這樣就從screen終端跳出到遠程終端了
- 而 screen 終端已經被調到後臺了
- 遠程終端出現一條信息 detached from 12674.pts-0.tom-01
- 這條信息裏面,有用的信息是 12674,這是剛纔的screen終端的號碼
- 若是要將剛纔的 screen 終端從後臺調出來,須要用到這個號碼
- 如圖,若是不記得screen號碼是多少
- 可使用 screen -ls 查看有哪些screen 存在
- 這裏也能夠看到 screen 終端的號碼
- 如圖,使用 screen -r 12674 就能夠把12674終端從後臺調出來
- 格式就是 screen -r 終端號碼
- 如圖,終端從新被調出來了
- 如圖,若是想把這個screen終端取消掉
- 就在 screen終端裏面使用 exit 命令就會退出終端
- 這個screen終端就被取消掉了
- 如圖,使用 screen -ls 查看,沒有任何終端存在了
- 如圖,反覆輸入 screen 而後調到後臺去
- 重複了 3 次,這樣後臺就有了 3個 screen終端
- 如圖,使用 screen -ls 查看,能夠看到有3個終端的信息
- 每一個終端都是不一樣的號碼
- 若是想進入其中一個終端,就使用 screen -r 終端號碼
- 就能夠進入對應終端號碼的screen終端了
- 可是有一個問題,若是有不少screen終端,時間長了之後
- 不知道哪一個終端是幹嗎的,從上圖的終端名稱來看
- 根本沒法區分不一樣終端在作什麼
- 如圖,使用 -S(大寫) 選項能夠自定義screen終端的名稱
- 這裏自定義了一個 test_screen 終端
- 如圖,screen -ls 查看,能夠看到screen名稱爲 test_screen的終端
- 如圖,若是想返回 screen終端,除了使用終端號碼以外
- 還可使用 screnn -r 終端名稱 的方式來返回終端