標籤:
1、使用bash命令,在server機上完成以下任務。(考點是:head tail的使用)
.顯示/usr/bin/clean-binary-files檔案的前12行,並將其輸出到/home/student/headtail.txt
.顯示/usr/bin/clean-binary-files檔案的最後9行,並將其添加到/home/student/headtail.txt
(存放到一個檔案裡,記得有個增量添加和異地同步的命令rsync和scp實現,MK在一篇部落格裡有提到過。 這裡使用的是>>重新導向,這裡>與>>的區別,naifuzhang在知道中回答道:> 是定向輸出到檔案,如果檔案不存在,就建立檔案;如果檔案存在,就將其清空;一般我們備份清理記錄檔的時候,就是這種方法:先備份日誌,再用`>`,將記錄檔清空(檔案大小變成0位元組);>> 這個是將輸出內容追加到目標檔案中。如果檔案不存在,就建立檔案;如果檔案存在,則將新的內容追加到那個檔案的末尾,該檔案中的原有內容不受影響。 把前面的檔案輸出到後面的檔案裡,順序不要搞錯了。)
1.1 顯示/usr/bin/clean-binary-files檔案的前12行,並將其輸出到/home/student/headtail.txt檔案
$ head -n 12 /usr/bin/clean-binary-files > /home/student/headtail.txt
1.2 顯示/usr/bin/clean-binary-files檔案的最後9行,並將其添加到/home/student/headtail.txt
$ tail -n 9 /usr/bin/clean-binary-files >> /home/student/headtail.txt
附MK博文摘要:
rsync累加式更新
然後是檔案的累加式更新,主要解決的問題是現在有兩台伺服器A和B,要將A伺服器上的test目錄差異複寫到B伺服器上的test目錄(所謂累加式更新就是指B伺服器原來已經有的檔案不再傳了,只傳送那些A有的而B沒有的),這樣使得B伺服器上的test檔案夾保持與A同步
這就需要用到rsync這個命令,這個命令的用法跟scp是一樣的
比如在A伺服器下執行命令:rsync -r /home/test/ [email protected]:/home/test 即可實現累加式更新
注意:這裡有一個問題需要詳細說明一下:
假如test目錄下有1.txt,2.txt這兩個檔案
如果命令中來源目錄那裡寫成這樣:/home/test/
那麼rsync準備更新的檔案清單就是
1.txt
2.txt
然後就會在B機器的/home/test目錄下找這兩個檔案並做累加式更新,這樣能夠滿足需求
但如果來源目錄寫成這樣:/home/test
那麼rsync準備累加式更新的檔案清單就會是這樣:
test/1.txt
test/2.txt
然後在B機器的/home/test目錄下尋找test/1.txt,發現沒有test檔案夾,於是又建立了test檔案夾,所以這樣執行的結果就是B機器的目錄結構就會有這兩個檔案,而這不是希望看到的
/home/test/test/1.txt
/home/test/test/2.txt
所以要注意這個問題。下面兩種寫法是正確的:
rsync -r /home/test/ [email protected]:/home/test
或者
rsync -r /home/test [email protected]:/home
具體的關於rsync的詳細參數的設定這裡就不說了,這裡只把一種推薦的命令運行方式記錄下來:
rsync -rtv /home/test/ [email protected]:/home/test
-t是指判斷檔案是否已有的時候只判斷檔案的時間戳記和檔案的大小,如果都一樣就把這個檔案跳過(這是一種不夠嚴謹但足夠快的方法)
-v是指輸出一下執行的日誌,其實可以加很多v,v越多,輸出的日誌越多
免驗證訪問
現在就可以將crontab和rsync結合一下了,當然首先需要解決兩個機器之間rsync免驗證的問題,也就是命令可以直接這樣寫(不需要B機器的使用者名稱和密碼):
rsync -rtv /home/test [email protected]:/home/test
關於這個網上看了一些rsync的配置,但是覺得太麻煩了,想到這個跟scp差不多,是不是也可以直接ssh免驗證的那種方式解決,試了一下,可行
關於ssh免驗證登入,是這樣做的(這裡的使用者全部用root,當然可以用其他的):
在A機器下:
首先產生秘鑰檔案
ssh-keygen -t rsa -P ‘‘
注意‘’是兩個單引號,表示密碼為空白
然後將產生的id_rsa.pub檔案複製到B伺服器上(注意檔案的位置為/root/.ssh,如果是其他使用者應該是/home/user/.ssh,即為目前使用者的主目錄)
scp /root/.ssh/id_rsa.pub [email protected]:/root/
(因為操作還沒有完成,這裡還要輸入密碼)
然後在B機器上操作:
如果/root/.ssh/裡沒有authorized_keys這個檔案,那麼將從A機器scp過來的id_rsa.pub檔案移動並重新命名成authorized_keys即可
mv /root/id_rsa.pub /root/.ssh/authorized_keys
如果這個authorized_keys檔案已經存在,那麼將id_rsa.pub這個檔案的內容追加到authorized_keys即可
cat /root/id_rsa.pub >> /root/.ssh/authorized_keys
此時就可以在A機器上免密碼訪問B機器了,注意別搞反了
在A機器上測試一下:
ssh [email protected]
如果不需要輸入密碼就可以登入,說明配置成功
REDHAT一總複習1 輸出重新導向及head tail的用法