[linux文件打包壓縮]
(http://www.reibang.com/p/7db19fbf8b11
)
關(guān)于壓縮技術(shù)的一些講解,假如一個(gè)數(shù)據(jù)是這樣巢掺,1 0 1 1 1 0 1 0句伶,0可以當(dāng)作空位提取出來,然后0的位置無法寫入數(shù)據(jù)陆淀,或者連續(xù)三個(gè)1記作一個(gè)規(guī)則提取出來考余,規(guī)則也一并存入,之后解壓時(shí)候又按規(guī)則放入
*.Z compress 程序壓縮的文件倔约;
*.zip zip 程序壓縮的文件秃殉;
*.gz gzip 程序壓縮的文件;
*.bz2 bzip2 程序壓縮的文件浸剩;
*.xz xz 程序壓縮的文件钾军;
*.tar tar 程序打包的數(shù)據(jù),并沒有壓縮過绢要;
*.tar.gz tar 程序打包的文件吏恭,其中并且經(jīng)過 gzip 的壓縮
*.tar.bz2 tar 程序打包的文件,其中并且經(jīng)過 bzip2 的壓縮
*.tar.xz tar 程序打包的文件重罪,其中并且經(jīng)過 xz 的壓縮
gzip, bzip2 以及 xz 樱哼,這些都只能對單個(gè)文件進(jìn)行壓縮哀九,不能操作目錄。
gzip
gzip 壓縮解壓單個(gè)文件
壓縮文件后搅幅,自動(dòng)刪除源文件, 自動(dòng)添加 .gz 為擴(kuò)展名
解壓文件后阅束,自動(dòng)刪除原壓縮文件
gzip [-vd] file
選項(xiàng)和參數(shù)
-v 壓縮時(shí)候顯示壓縮比
-d 解壓
cp /etc/services /tmp
cd /tmp
壓縮
gzip -v services
查看壓縮文件的內(nèi)容
zcat services.gz
搜索壓縮文件的關(guān)鍵字位置
zgrep blp5 services.gz
瀏覽壓縮文件
zless services.gz
解壓
gzip services.gz
壓縮文件并保留源文件
gzip -c services > services.gz
bzip2
更好的壓縮比,但是會(huì)占用相對多一些的時(shí)間
用法幾乎和 gzip 一樣
[dmtsai@study ~]$ bzip2 [-cdkzv#] 文件名
[dmtsai@study ~]$ bzcat 文件名.bz2
選項(xiàng)與參數(shù):
-c :將壓縮的過程產(chǎn)生的數(shù)據(jù)輸出到屏幕上茄唐!
-d :解壓縮的參數(shù)
-k :保留原始文件息裸,而不會(huì)刪除原始的文件喔!
-v :可以顯示出原文件/壓縮文件的壓縮比等信息沪编;
-# :與 gzip 同樣的呼盆,都是在計(jì)算壓縮比的參數(shù), -9 最佳蚁廓, -1 最快
壓縮
bzip2 -v services
查看壓縮文件內(nèi)容
bzcat services.bg
bzless services.bz2
解壓
bzat -d services.bz2
xz 擴(kuò)展
更高壓縮比访圃,相應(yīng)的更長時(shí)間的耗費(fèi)。
和前兩個(gè)幾乎一樣的用法
tar
-c :創(chuàng)建打包文件相嵌,可搭配 -v 來察看過程中被打包的文件名(filename)
-t :察看打包文件的內(nèi)容含有哪些文件名腿时,重點(diǎn)在察看“文件名”就是了;
-x :解打包或解壓縮的功能平绩,可以搭配 -C (大寫) 在特定目錄解開
特別留意的是圈匆, -c, -t, -x 不可同時(shí)出現(xiàn)在一串命令行中。
-v :在壓縮/解壓縮的過程中捏雌,將正在處理的文件名顯示出來跃赚!
-f filename:-f 后面要立刻接要被處理的文件名!建議 -f 單獨(dú)寫一個(gè)選項(xiàng)啰P允(比較不會(huì)忘記)
-C 目錄 :這個(gè)選項(xiàng)用在解壓縮纬傲,若要在特定目錄解壓縮,可以使用這個(gè)選項(xiàng)
例子
touch a.c
tar -czvf test.tar.gz a.c //壓縮 a.c文件為test.tar.gz
a.c
列出壓縮文件內(nèi)容
tar -tzvf test.tar.gz
-rw-r--r-- root/root 0 2010-05-24 16:51:59 a.c
解壓文件
tar -xzvf test.tar.gz
a.c
只打包肤频,不壓縮
創(chuàng)建
tar -cvf 創(chuàng)建后的文件名.tar 文檔1 文檔2
查看包內(nèi)的文件列表
tar -tf 創(chuàng)建后的文件名.tar
解包到當(dāng)前位置
tar -xf 創(chuàng)建后的文件名.tar
解包到指定位置
tar -xf 創(chuàng)建后的文件名.tar -C /tmp
打包后進(jìn)行壓縮
-z :通過 gzip 的支持進(jìn)行壓縮/解壓縮:此時(shí)文件名最好為 *.tar.gz
-j :通過 bzip2 的支持進(jìn)行壓縮/解壓縮:此時(shí)文件名最好為 *.tar.bz2
-J :通過 xz 的支持進(jìn)行壓縮/解壓縮:此時(shí)文件名最好為 *.tar.xz
以上 3 個(gè) 選項(xiàng)互斥
特別的
-p(小寫) :保留備份數(shù)據(jù)的原本權(quán)限與屬性叹括,常用于備份重要的配置文件
-P(大寫) :保留絕對路徑,亦即允許備份數(shù)據(jù)中含有根目錄存在之意宵荒;
--exclude=FILE:在壓縮的過程中汁雷,不要將 FILE 打包!
示例: 備份系統(tǒng)的配置文件报咳,并且保留源文件的 權(quán)限 和 屬性 信息
time tar -zpcv -f etc.tar.gz /etc
time 命令可以計(jì)算某個(gè)程序執(zhí)行的時(shí)間
查看
查看壓縮包的文件列表
tar -tf etc.tar.gz
解壓
解壓壓縮包中的某一個(gè)文件
tar -xf etc.tar.gz etc/sysctl.conf_bk
解壓到指定目錄
tar -xf etc.tar.gz -C /tmp
壓縮的時(shí)候排除文檔
打包壓縮的時(shí)候可以排除一個(gè)或者多個(gè)文件或者目錄,d1,d2是文件或者目錄
排除一個(gè)文件
tar -jcv -f t.tar.bz2 d1 d2 --exclude=s1
排除多個(gè)文件
tar -jcv -f t.tar.bz2 d1 d2 --exclude={s1,s2}
目錄也可以
tar -jcv -f t.tar.bz2 d1 d2 --exclude=d1
系統(tǒng)日志輪轉(zhuǎn)
[更多日志詳情]
(http://www.reibang.com/p/bc2168a9e35b
)
系統(tǒng)常用日志
/var/log/messages
這個(gè)文件相當(dāng)?shù)闹匾姥叮瑤缀跸到y(tǒng)發(fā)生的錯(cuò)誤訊息 (或者是重要的信息) 都會(huì)記錄在這個(gè)文件中; 如果系統(tǒng)發(fā)生莫名的錯(cuò)誤時(shí)暑刃,這個(gè)文件是應(yīng)該首先查詢的厢漩。
/var/log/secure
基本上,只要牽涉到“需要輸入帳號密碼”的軟件岩臣,那么當(dāng)?shù)顷憰r(shí) (不管登陸正確或錯(cuò)誤) 都會(huì)被記錄在此文件中溜嗜。 su, sudo 等程序宵膨、還有網(wǎng)絡(luò)連線的 ssh, telnet 等程序, 登陸信息都會(huì)被記載在這里
/var/log/boot.log
開機(jī)的時(shí)候系統(tǒng)核心會(huì)去偵測與啟動(dòng)硬件炸宵,接下來開始各種核心支持的功能啟動(dòng)等辟躏。這些流程都會(huì)記錄在 /var/log/boot.log 里面。只保留本次的開機(jī)信息焙压。
/var/log/cron
記錄 crontab 調(diào)度有沒有實(shí)際被進(jìn)行鸿脓? 進(jìn)行過程有沒有發(fā)生錯(cuò)誤? /etc/crontab 是否配置正確涯曲?
/var/log/dmesg
記錄系統(tǒng)在開機(jī)的時(shí)候核心偵測過程所產(chǎn)生的各項(xiàng)信息。
/var/log/lastlog
可以記錄系統(tǒng)上面所有的帳號最近一次登陸系統(tǒng)時(shí)的相關(guān)信息
/var/log/maillog 或 /var/log/mail/*
記錄郵件的往來信息在塔,其實(shí)主要是記錄 postfix (SMTP 協(xié)定提供者) 與 dovecot (POP3 協(xié)定提供者) 所產(chǎn)生的訊息啦幻件。 SMTP 是發(fā)信所使用的通訊協(xié)定, POP3 則是收信使用的通訊協(xié)定蛔溃。 postfix 與 dovecot 則分別是兩套達(dá)成通訊協(xié)定的軟件绰沥。
/var/log/wtmp, /var/log/faillog
這兩個(gè)文件可以記錄正確登陸系統(tǒng)者的帳號信息 (wtmp) 與錯(cuò)誤登陸時(shí)所使用的帳號信息 (faillog)
CentOS 使用 rsyslog.service 這個(gè)服務(wù)來統(tǒng)一管理這些系統(tǒng)日志文件。
日志服務(wù)和配置文件
查看日志服務(wù)的狀態(tài):systemctl status rsyslog.service
rsyslog.service 的配置文件
既然是服務(wù)贺待,就會(huì)有配置文件徽曲。
/etc/rsyslog.conf
配置文件用于設(shè)置
(1)什么服務(wù) (2)的什么級別的信息 (3)需要被記錄在哪里(設(shè)備或文件)
比如:
cron.* /var/log/cron
表示 關(guān)于計(jì)劃任務(wù)的所有級別的信息,都記錄到 /var/log/cron 文件中
*.info;mail.none;authpriv.none;cron.none /var/log/messages
表示所有服務(wù)端 info 級別的信息麸塞,郵件的 none 級別的信息秃臣,登錄認(rèn)證的 none 基本的信息和計(jì)劃任務(wù)的 none 基本的信息都記錄到 /var/log/messages 文件中
了解
添加額外的記錄日志文件
編輯 /etc/rsyslog.conf 文件
Add other file
*.info /var/log/shark.log
保存退出后
重啟服務(wù)
systemctl restart rsyslog
把一個(gè)Linux 主機(jī)設(shè)置為 日志服務(wù)器
通過配置 /etc/rsyslog.conf 可以把一個(gè) Linux 主機(jī)配置成一臺(tái) 日志服務(wù)器,這樣其他 Linux 主機(jī)的日志哪工,除了記錄在自己的本地外奥此,還會(huì)發(fā)送的 這臺(tái)日志服務(wù)器上一份。
服務(wù)端的設(shè)置
編輯 /etc/rsyslog.conf
Provides TCP syslog reception
InputTCPServerRun 514
重啟服務(wù)
systemctl restart rsyslog.service
檢查監(jiān)聽端口
[root@shark ~]# ss -natal |grep 514
LISTEN 0 25 :514 :
LISTEN 0 25 :::514 :::
客戶端設(shè)置
編輯 /etc/rsyslog.conf
. @@192.168.1.100
@@192.168.1.100
表示使用 TCP 協(xié)議傳輸數(shù)據(jù)到日志服務(wù)器 191.168.1.100 上
日志輪轉(zhuǎn)
日志輪轉(zhuǎn)也叫日志的切割雁比,通俗來講就是對日志文件進(jìn)行大小的控制稚虎。
Linux 系統(tǒng)通常會(huì)長時(shí)間的不停機(jī)運(yùn)行,這樣就會(huì)產(chǎn)生好多信息記錄到不同的日志中偎捎。隨著時(shí)間的推移蠢终,日志的容量自然會(huì)越來越大,那問題就來了茴她,硬盤的空間是有限的寻拂,那為了控制日志文件的大小,就需要對日志文件進(jìn)行控制败京。
同時(shí)是把目前的日志文件改名兜喻,緊接著創(chuàng)建一個(gè)新的日志文件,名稱和原來的一樣赡麦,重啟服務(wù)進(jìn)程朴皆,讓其向新的日志文件中寫日志帕识。
logrotate 負(fù)責(zé)對系統(tǒng)日志的輪轉(zhuǎn)。
通過定時(shí)任務(wù)每天都會(huì)執(zhí)行一次遂铡。
[root@shark ~]# cat /etc/cron.daily/logrotate
#!/bin/sh
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
logrotate 的配置文件
/etc/logrotate.conf
主配置文件肮疗, 設(shè)置的默認(rèn)值
/etc/logrotate.d/
被包含的子配置文件,可以對某一些服務(wù)設(shè)置特定的配置
logrotate 的主要功能就是將舊的日志文件改成舊文件扒接, 并且重新創(chuàng)建一個(gè)新的空的文件來記錄伪货。
如下圖:
/etc/logrotate.conf
的默認(rèn)值
weekly >==每周對系統(tǒng)的日志文件進(jìn)行一次 rotate 的工作
rotate 4 >==同類的日志文件,保留 4 份钾怔!
create >==創(chuàng)建一個(gè)新的空文件碱呼,繼續(xù)記錄!
dateext >==可以讓被輪轉(zhuǎn)的文件名稱加上日期作為文件的后綴名宗侦!
#compress >==被輪轉(zhuǎn)的到日志文件是否壓縮
設(shè)置語法
登錄文件的絕對路徑文件名 ... {
個(gè)別的參數(shù)設(shè)置值愚臀,如 monthly, compress 等等
}
多個(gè)文件可以使用一套參數(shù)值。
/path/log/file1.log
/path/log/file2.log
{
...
}
假如矾利,想對某個(gè)日志文件實(shí)現(xiàn)輪轉(zhuǎn)姑裂,建議在 /etc/logrotate.d/
目錄中添加子配置文件
比如
[root@shark logrotate.d]# cat syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
missingok
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
自定義日志輪轉(zhuǎn)
在 目錄下編輯一個(gè)文件
/var/log/shark1.log {
monthly >== 每月一次輪轉(zhuǎn)
size=10M >== 文件大小大于 10M 時(shí), 也開始輪轉(zhuǎn)
rotate 2 >== 日志文件保留 2 個(gè)
compress >== 對舊的日志文件進(jìn)行壓縮
sharedscripts >== 輪轉(zhuǎn)之前需要先被執(zhí)行命令
prerotate
/usr/bin/chattr -a /var/log/shark1.log >==去掉特殊屬性
endscript
sharedscripts >== 輪轉(zhuǎn)之后需要被執(zhí)行的命令
postrotate
/usr/bin/chattr +a /var/log/shark1.log >== 特殊屬性男旗,文件內(nèi)容只能增加不能刪除或者修改
endscript
}
測試
可以使用 logrotate
命令測試
logrotate -vf /etc/logrotate.conf
-v 顯示輪轉(zhuǎn)的詳情
-f 立刻進(jìn)行一次輪轉(zhuǎn)
FTPServer
[閆哥簡書]
(http://www.reibang.com/p/252f901c5a8a
)
20端口傳輸數(shù)據(jù)
21端口傳輸控制信號