浙江龍游疫情最新消息搜索引擎排名優(yōu)化
1 Linux概述
- Linux 是一套免費(fèi)使用和自由傳播的類 Unix 操作系統(tǒng),是一個基于 POSIX 和 UNIX 的多用戶、多任務(wù)、支持多線程和多 CPU 的操作系統(tǒng)。Linux 能運(yùn)行主要的 UNIX 工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。它支持 32 位和 64 位硬件。Linux 繼承了 Unix 以網(wǎng)絡(luò)為核心的設(shè)計(jì)思想,是一個性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。
- 今天各種場合都有使用各種 Linux 發(fā)行版,從嵌入式設(shè)備到超級計(jì)算機(jī),并且在服務(wù)器領(lǐng)域確定了地位,通常服務(wù)器使用 LAMP(Linux + Apache + MySQL + PHP)或 LNMP(Linux + Nginx+ MySQL + PHP)組合。
2 Linux系統(tǒng)目錄結(jié)構(gòu)
以下是對這些目錄的解釋:
-
/bin:
bin 是 Binaries (二進(jìn)制文件) 的縮寫, 這個目錄存放著最經(jīng)常使用的命令。 -
/boot:
這里存放的是啟動 Linux 時使用的一些核心文件,包括一些連接文件以及鏡像文件。 -
/dev :
dev 是 Device(設(shè)備) 的縮寫, 該目錄下存放的是 Linux 的外部設(shè)備,在 Linux 中訪問設(shè)備的方式和訪問文件的方式是相同的。 -
/etc:
etc 是 Etcetera(等等) 的縮寫,這個目錄用來存放所有的系統(tǒng)管理所需要的配置文件和子目錄。 -
/home:
用戶的主目錄,在 Linux 中,每個用戶都有一個自己的目錄,一般該目錄名是以用戶的賬號命名的,如上圖中的 alice、bob 和 eve。 -
/lib:
lib 是 Library(庫) 的縮寫這個目錄里存放著系統(tǒng)最基本的動態(tài)連接共享庫,其作用類似于 Windows 里的 DLL 文件。幾乎所有的應(yīng)用程序都需要用到這些共享庫。 -
/lost+found:
這個目錄一般情況下是空的,當(dāng)系統(tǒng)非法關(guān)機(jī)后,這里就存放了一些文件。 -
/media:
linux 系統(tǒng)會自動識別一些設(shè)備,例如U盤、光驅(qū)等等,當(dāng)識別后,Linux 會把識別的設(shè)備掛載到這個目錄下。 -
/mnt:
系統(tǒng)提供該目錄是為了讓用戶臨時掛載別的文件系統(tǒng)的,我們可以將光驅(qū)掛載在 /mnt/ 上,然后進(jìn)入該目錄就可以查看光驅(qū)里的內(nèi)容了。 -
/opt:
opt 是 optional(可選) 的縮寫,這是給主機(jī)額外安裝軟件所擺放的目錄。比如你安裝一個ORACLE數(shù)據(jù)庫則就可以放到這個目錄下。默認(rèn)是空的。 -
/proc:
proc 是 Processes(進(jìn)程) 的縮寫,/proc 是一種偽文件系統(tǒng)(也即虛擬文件系統(tǒng)),存儲的是當(dāng)前內(nèi)核運(yùn)行狀態(tài)的一系列特殊文件,這個目錄是一個虛擬的目錄,它是系統(tǒng)內(nèi)存的映射,我們可以通過直接訪問這個目錄來獲取系統(tǒng)信息。
這個目錄的內(nèi)容不在硬盤上而是在內(nèi)存里,我們也可以直接修改里面的某些文件,比如可以通過下面的命令來屏蔽主機(jī)的ping命令,使別人無法ping你的機(jī)器:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
-
/root:
該目錄為系統(tǒng)管理員,也稱作超級權(quán)限者的用戶主目錄。 -
/sbin:
s 就是 Super User 的意思,是 Superuser Binaries (超級用戶的二進(jìn)制文件) 的縮寫,這里存放的是系統(tǒng)管理員使用的系統(tǒng)管理程序。 -
/selinux:
這個目錄是 Redhat/CentOS 所特有的目錄,Selinux 是一個安全機(jī)制,類似于 windows 的防火墻,但是這套機(jī)制比較復(fù)雜,這個目錄就是存放selinux相關(guān)的文件的。 -
/srv:
該目錄存放一些服務(wù)啟動之后需要提取的數(shù)據(jù)。 -
/sys:
這是 Linux2.6 內(nèi)核的一個很大的變化。該目錄下安裝了 2.6 內(nèi)核中新出現(xiàn)的一個文件系統(tǒng) sysfs 。
sysfs 文件系統(tǒng)集成了下面3種文件系統(tǒng)的信息:針對進(jìn)程信息的 proc 文件系統(tǒng)、針對設(shè)備的 devfs 文件系統(tǒng)以及針對偽終端的 devpts 文件系統(tǒng)。
該文件系統(tǒng)是內(nèi)核設(shè)備樹的一個直觀反映。
當(dāng)一個內(nèi)核對象被創(chuàng)建的時候,對應(yīng)的文件和目錄也在內(nèi)核對象子系統(tǒng)中被創(chuàng)建。
-
/tmp:
tmp 是 temporary(臨時) 的縮寫這個目錄是用來存放一些臨時文件的。 -
/usr:
usr 是 unix shared resources(共享資源) 的縮寫,這是一個非常重要的目錄,用戶的很多應(yīng)用程序和文件都放在這個目錄下,類似于 windows 下的 program files 目錄。 -
/usr/bin:
系統(tǒng)用戶使用的應(yīng)用程序。 -
/usr/sbin:
超級用戶使用的比較高級的管理程序和系統(tǒng)守護(hù)程序。 -
/usr/src:
內(nèi)核源代碼默認(rèn)的放置目錄。 -
/var:
var 是 variable(變量) 的縮寫,這個目錄中存放著在不斷擴(kuò)充著的東西,我們習(xí)慣將那些經(jīng)常被修改的目錄放在這個目錄下。包括各種日志文件。 -
/run:
是一個臨時文件系統(tǒng),存儲系統(tǒng)啟動以來的信息。當(dāng)系統(tǒng)重啟時,這個目錄下的文件應(yīng)該被刪掉或清除。如果你的系統(tǒng)上有 /var/run 目錄,應(yīng)該讓它指向 run。
3 關(guān)機(jī)
-
正確的關(guān)機(jī)流程為:sync > shutdown > reboot > halt。關(guān)機(jī)指令為:shutdown ,你可以man shutdown 來看一下幫助文檔。
-
sync 將數(shù)據(jù)由內(nèi)存同步到硬盤中。shutdown 關(guān)機(jī)指令,你可以man shutdown 來看一下幫助文檔。例如你可以運(yùn)行如下命令關(guān)機(jī):shutdown –h 10 ‘This server will shutdown after 10 mins’ 這個命令告訴大家,計(jì)算機(jī)將在10分鐘后關(guān)機(jī),并且會顯示在登陸用戶的當(dāng)前屏幕中。shutdown –h now 立馬關(guān)機(jī)shutdown –h 20:25 系統(tǒng)會在今天20:25關(guān)機(jī)shutdown –h +10 十分鐘后關(guān)機(jī)shutdown –r now 系統(tǒng)立馬重啟shutdown –r +10 系統(tǒng)十分鐘后重啟reboot 就是重啟,等同于 shutdown –r nowhalt 關(guān)閉系統(tǒng),等同于shutdown –h now 和 poweroff
4 文件
4.1 更改文件基本屬性
-
在 Linux 中我們可以使用 ll 或者 ls –l 命令來顯示一個文件的屬性以及文件所屬的用戶和組
[root@www /]# ls -l total 64 dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot
在 Linux 中第一個字符代表這個文件是目錄、文件或鏈接文件等等。
- 當(dāng)為 d 則是目錄
- 當(dāng)為 - 則是文件;
- 若是 l 則表示為鏈接文檔(link file);
- 若是 b 則表示為裝置文件里面的可供儲存的接口設(shè)備(可隨機(jī)存取裝置);
- 若是 c 則表示為裝置文件里面的串行端口設(shè)備,例如鍵盤、鼠標(biāo)(一次性讀取裝置)。
接下來的字符中,以三個為一組,且均為 rwx 的三個參數(shù)的組合。其中, r 代表可讀(read)、 w 代表可寫(write)、 x 代表可執(zhí)行(execute)。 要注意的是,這三個權(quán)限的位置不會改變,如果沒有權(quán)限,就會出現(xiàn)減號 - 而已。
-
對于文件來說,它都有一個特定的所有者,也就是對該文件具有所有權(quán)的用戶。同時,在Linux系統(tǒng)中,用戶是按組分類的,一個用戶屬于一個或多個組。文件所有者以外的用戶又可以分為文件所屬組的同組用戶和其他用戶。因此,Linux系統(tǒng)按文件所有者、文件所有者同組用戶和其他用戶來規(guī)定了不同的文件訪問權(quán)限。在以上實(shí)例中,mysql 文件是一個目錄文件,屬主和屬組都為 mysql,屬主有可讀、可寫、可執(zhí)行的權(quán)限;與屬主同組的其他用戶有可讀和可執(zhí)行的權(quán)限;其他用戶也有可讀和可執(zhí)行的權(quán)限。對于 root 用戶來說,一般情況下,文件的權(quán)限對其不起作用。
-
chgrp:更改文件屬組
chgrp [-R] 屬組名 文件名
參數(shù)選項(xiàng)
- -R:遞歸更改文件屬組,就是在更改某個目錄文件的屬組時,如果加上-R的參數(shù),那么該目錄下的所有文件的屬組都會更改。
-
chown:更改文件屬主,也可以同時更改文件屬組
chown [–R] 屬主名 文件名 chown [-R] 屬主名:屬組名 文件名
-
chmod:更改文件9個屬性
Linux文件屬性有兩種設(shè)置方法,一種是數(shù)字,一種是符號。數(shù)字設(shè)置方法:
Linux 文件的基本權(quán)限就有九個,分別是 owner/group/others(擁有者/組/其他) 三種身份各有自己的 read/write/execute 權(quán)限。我們可以使用數(shù)字來代表各個權(quán)限,各權(quán)限的分?jǐn)?shù)對照表如下:
- r:4
- w:2
- x:1
每種身份(owner/group/others)各自的三個權(quán)限(r/w/x)分?jǐn)?shù)是需要累加的,例如當(dāng)權(quán)限為: -rwxrwx— 分?jǐn)?shù)則是:
- owner = rwx = 4+2+1 = 7
- group = rwx = 4+2+1 = 7
- others= — = 0+0+0 = 0
所以等一下我們設(shè)定權(quán)限的變更時,該文件的權(quán)限數(shù)字就是 770。變更權(quán)限的指令 chmod 的語法是這樣的:
chmod [-R] xyz 文件或目錄
選項(xiàng)與參數(shù):
- xyz : 就是剛剛提到的數(shù)字類型的權(quán)限屬性,為 rwx 屬性數(shù)值的相加。
- -R : 進(jìn)行遞歸(recursive)的持續(xù)變更,以及連同次目錄下的所有文件都會變更
舉例來說,如果要將 .bashrc 這個文件所有的權(quán)限都設(shè)定啟用,那么命令如下:
[root@www ~]# ls -al .bashrc -rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc [root@www ~]# chmod 777 .bashrc [root@www ~]# ls -al .bashrc -rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc
符號設(shè)置方法:
可以使用 u, g, o 來代表三種身份的權(quán)限。此外, a 則代表 all,即全部的身份。讀寫的權(quán)限可以寫成 r, w, x,也就是可以使用下表的方式來看:
如果我們需要將文件權(quán)限設(shè)置為 -rwxr-xr– ,可以使用 chmod u=rwx,g=rx,o=r 文件名 來設(shè)定:
# touch test1 // 創(chuàng)建 test1 文件 # ls -al test1 // 查看 test1 默認(rèn)權(quán)限 -rw-r--r-- 1 root root 0 Nov 15 10:32 test1 # chmod u=rwx,g=rx,o=r test1 // 修改 test1 權(quán)限 # ls -al test1 -rwxr-xr-- 1 root root 0 Nov 15 10:32 test1
而如果是要將權(quán)限去掉而不改變其他已存在的權(quán)限呢?例如要拿掉全部人的可執(zhí)行權(quán)限,則:
# chmod a-x test1 # ls -al test1 -rw-r--r-- 1 root root 0 Nov 15 10:32 test1
4.2 文件內(nèi)容查看
-
cat:由第一行開始顯示文件內(nèi)容
語法:
cat [-AbEnTv]
選項(xiàng)與參數(shù):
- -A :相當(dāng)於 -vET 的整合選項(xiàng),可列出一些特殊字符而不是空白而已;
- -b :列出行號,僅針對非空白行做行號顯示,空白行不標(biāo)行號!
- -E :將結(jié)尾的斷行字節(jié) $ 顯示出來;
- -n :列印出行號,連同空白行也會有行號,與 -b 的選項(xiàng)不同;
- -T :將 [tab] 按鍵以 ^I 顯示出來;
- -v :列出一些看不出來的特殊字符
檢看 /etc/issue 這個文件的內(nèi)容:
[root@www ~]# cat /etc/issue CentOS release 6.4 (Final) Kernel \r on an \m
-
tac:tac與cat命令剛好相反,文件內(nèi)容從最后一行開始顯示,可以看出 tac 是 cat 的倒著寫!如:
[root@www ~]# tac /etc/issueKernel \r on an \m CentOS release 6.4 (Final)
-
nl:顯示行號
語法:
nl [-bnw] 文件
選項(xiàng)與參數(shù):
- -b :指定行號指定的方式,主要有兩種:
-b a :表示不論是否為空行,也同樣列出行號(類似 cat -n);
-b t :如果有空行,空的那一行不要列出行號(默認(rèn)值); - -n :列出行號表示的方法,主要有三種:
-n ln :行號在熒幕的最左方顯示;
-n rn :行號在自己欄位的最右方顯示,且不加 0 ;
-n rz :行號在自己欄位的最右方顯示,且加 0 ; - -w :行號欄位的占用的位數(shù)。
實(shí)例一:用 nl 列出 /etc/issue 的內(nèi)容
[root@www ~]# nl /etc/issue1 CentOS release 6.4 (Final)2 Kernel \r on an \m
- more:一頁一頁翻動
[root@www ~]# more /etc/man_db.config # # Generated automatically from man.conf.in by the # configure script. # # man.conf from man-1.6d ....(中間省略).... --More--(28%) <== 重點(diǎn)在這一行喔!你的光標(biāo)也會在這里等待你的命令
在 more 這個程序的運(yùn)行過程中,你有幾個按鍵可以按的:
- 空白鍵 (space):代表向下翻一頁;
- Enter :代表向下翻『一行』;
- /字串 :代表在這個顯示的內(nèi)容當(dāng)中,向下搜尋『字串』這個關(guān)鍵字;
- :f :立刻顯示出檔名以及目前顯示的行數(shù);
- q :代表立刻離開 more ,不再顯示該文件內(nèi)容。
- b 或 [ctrl]-b :代表往回翻頁,不過這動作只對文件有用,對管線無用。
less:一頁一頁翻動,以下實(shí)例輸出/etc/man.config文件的內(nèi)容:
[root@www ~]# less /etc/man.config # # Generated automatically from man.conf.in by the # configure script. # # man.conf from man-1.6d ....(中間省略).... : <== 這里可以等待你輸入命令!
less運(yùn)行時可以輸入的命令有:
- 空白鍵 :向下翻動一頁;
- [pagedown]:向下翻動一頁;
- [pageup] :向上翻動一頁;
- /字串 :向下搜尋『字串』的功能;
- ?字串 :向上搜尋『字串』的功能;
- n :重復(fù)前一個搜尋 (與 / 或 ? 有關(guān)!)
- N :反向的重復(fù)前一個搜尋 (與 / 或 ? 有關(guān)!)
- q :離開 less 這個程序;
- -b :指定行號指定的方式,主要有兩種:
-
head:取出文件前面幾行
語法:
head [-n number] 文件
選項(xiàng)與參數(shù):
- -n :后面接數(shù)字,代表顯示幾行的意思
[root@www ~]# head /etc/man.config
默認(rèn)的情況中,顯示前面 10 行!若要顯示前 20 行,就得要這樣:
[root@www ~]# head -n 20 /etc/man.config
-
tail:取出文件后面幾行
語法:
tail [-n number] 文件
選項(xiàng)與參數(shù):
- -n :后面接數(shù)字,代表顯示幾行的意思
- -f :表示持續(xù)偵測后面所接的檔名,要等到按下[ctrl]-c才會結(jié)束tail的偵測
[root@www ~]# tail /etc/man.config # 默認(rèn)的情況中,顯示最后的十行!若要顯示最后的 20 行,就得要這樣: [root@www ~]# tail -n 20 /etc/man.config
5 目錄
-
ls (列出目錄)
在Linux系統(tǒng)當(dāng)中, ls 命令可能是最常被運(yùn)行的。
語法:
[root@www ~]# ls [-aAdfFhilnrRSt] 目錄名稱 [root@www ~]# ls [--color={never,auto,always}] 目錄名稱 [root@www ~]# ls [--full-time] 目錄名稱
選項(xiàng)與參數(shù):
- -a :全部的文件,連同隱藏文件( 開頭為 . 的文件) 一起列出來(常用)
- -d :僅列出目錄本身,而不是列出目錄內(nèi)的文件數(shù)據(jù)(常用)
- -l :長數(shù)據(jù)串列出,包含文件的屬性與權(quán)限等等數(shù)據(jù);(常用)
將家目錄下的所有文件列出來(含屬性與隱藏檔)
[root@www ~]# ls -al ~
-
cd (切換目錄)
cd是Change Directory的縮寫,這是用來變換工作目錄的命令。
語法:
cd [相對路徑或絕對路徑] #使用 mkdir 命令創(chuàng)建 runoob 目錄 [root@www ~]# mkdir runoob#使用絕對路徑切換到 runoob 目錄 [root@www ~]# cd /root/runoob/#使用相對路徑切換到 runoob 目錄 [root@www ~]# cd ./runoob/# 表示回到自己的家目錄,亦即是 /root 這個目錄 [root@www runoob]# cd ~# 表示去到目前的上一級目錄,亦即是 /root 的上一級目錄的意思; [root@www ~]# cd ..
接下來大家多操作幾次應(yīng)該就可以很好的理解 cd 命令的。
-
pwd (顯示目前所在的目錄)
pwd 是 Print Working Directory 的縮寫,也就是顯示目前所在目錄的命令。
[root@www ~]# pwd [-P]
選項(xiàng)與參數(shù):
- -P :顯示出確實(shí)的路徑,而非使用連結(jié) (link) 路徑。
實(shí)例:單純顯示出目前的工作目錄:
[root@www ~]# pwd /root <== 顯示出目錄啦~
實(shí)例顯示出實(shí)際的工作目錄,而非連結(jié)檔本身的目錄名而已。
[root@www ~]# cd /var/mail <==注意,/var/mail是一個連結(jié)檔 [root@www mail]# pwd /var/mail <==列出目前的工作目錄 [root@www mail]# pwd -P /var/spool/mail <==怎么回事?有沒有加 -P 差很多~ [root@www mail]# ls -ld /var/mail lrwxrwxrwx 1 root root 10 Sep 4 17:54 /var/mail -> spool/mail # 看到這里應(yīng)該知道為啥了吧?因?yàn)?/var/mail 是連結(jié)檔,連結(jié)到 /var/spool/mail # 所以,加上 pwd -P 的選項(xiàng)后,會不以連結(jié)檔的數(shù)據(jù)顯示,而是顯示正確的完整路徑啊!
-
mkdir (創(chuàng)建新目錄)
如果想要創(chuàng)建新的目錄的話,那么就使用mkdir (make directory)吧。
語法:
mkdir [-mp] 目錄名稱
選項(xiàng)與參數(shù):
- -m :配置文件的權(quán)限喔!直接配置,不需要看默認(rèn)權(quán)限 (umask) 的臉色~
- -p :幫助你直接將所需要的目錄(包含上一級目錄)遞歸創(chuàng)建起來!
實(shí)例:請到/tmp底下嘗試創(chuàng)建數(shù)個新目錄看看:
[root@www ~]# cd /tmp [root@www tmp]# mkdir test <==創(chuàng)建一名為 test 的新目錄 [root@www tmp]# mkdir test1/test2/test3/test4 mkdir: cannot create directory `test1/test2/test3/test4': No such file or directory <== 沒辦法直接創(chuàng)建此目錄啊! [root@www tmp]# mkdir -p test1/test2/test3/test4
加了這個 -p 的選項(xiàng),可以自行幫你創(chuàng)建多層目錄!
實(shí)例:創(chuàng)建權(quán)限為 rwx–x–x 的目錄。
[root@www tmp]# mkdir -m 711 test2 [root@www tmp]# ls -l drwxr-xr-x 3 root root 4096 Jul 18 12:50 test drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1 drwx--x--x 2 root root 4096 Jul 18 12:54 test2
上面的權(quán)限部分,如果沒有加上 -m 來強(qiáng)制配置屬性,系統(tǒng)會使用默認(rèn)屬性。
如果我們使用 -m ,如上例我們給予 -m 711 來給予新的目錄 drwx–x–x 的權(quán)限。
-
rmdir (刪除空的目錄)
語法:
rmdir [-p] 目錄名稱
選項(xiàng)與參數(shù):
- **-p :**從該目錄起,一次刪除多級空目錄
刪除 runoob 目錄
[root@www tmp]# rmdir runoob/
將 mkdir 實(shí)例中創(chuàng)建的目錄(/tmp 底下)刪除掉!
[root@www tmp]# ls -l <==看看有多少目錄存在? drwxr-xr-x 3 root root 4096 Jul 18 12:50 test drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1 drwx--x--x 2 root root 4096 Jul 18 12:54 test2 [root@www tmp]# rmdir test <==可直接刪除掉,沒問題 [root@www tmp]# rmdir test1 <==因?yàn)樯杏袃?nèi)容,所以無法刪除! rmdir: `test1': Directory not empty [root@www tmp]# rmdir -p test1/test2/test3/test4 [root@www tmp]# ls -l <==您看看,底下的輸出中test與test1不見了! drwx--x--x 2 root root 4096 Jul 18 12:54 test2
利用 -p 這個選項(xiàng),立刻就可以將 test1/test2/test3/test4 一次刪除。
不過要注意的是,這個 rmdir 僅能刪除空的目錄,你可以使用 rm 命令來刪除非空目錄。
-
cp (復(fù)制文件或目錄)
cp 即拷貝文件和目錄。
語法:
[root@www ~]# cp [-adfilprsu] 來源檔(source) 目標(biāo)檔(destination) [root@www ~]# cp [options] source1 source2 source3 .... directory
選項(xiàng)與參數(shù):
- **-a:**相當(dāng)於 -pdr 的意思,至於 pdr 請參考下列說明;(常用)
- **-d:**若來源檔為連結(jié)檔的屬性(link file),則復(fù)制連結(jié)檔屬性而非文件本身;
- **-f:**為強(qiáng)制(force)的意思,若目標(biāo)文件已經(jīng)存在且無法開啟,則移除后再嘗試一次;
- **-i:**若目標(biāo)檔(destination)已經(jīng)存在時,在覆蓋時會先詢問動作的進(jìn)行(常用)
- **-l:**進(jìn)行硬式連結(jié)(hard link)的連結(jié)檔創(chuàng)建,而非復(fù)制文件本身;
- **-p:**連同文件的屬性一起復(fù)制過去,而非使用默認(rèn)屬性(備份常用);
- **-r:**遞歸持續(xù)復(fù)制,用於目錄的復(fù)制行為;(常用)
- **-s:**復(fù)制成為符號連結(jié)檔 (symbolic link),亦即『捷徑』文件;
- **-u:**若 destination 比 source 舊才升級 destination !
用 root 身份,將 root 目錄下的 .bashrc 復(fù)制到 /tmp 下,并命名為 bashrc
[root@www ~]# cp ~/.bashrc /tmp/bashrc [root@www ~]# cp -i ~/.bashrc /tmp/bashrc cp: overwrite `/tmp/bashrc'? n <==n不覆蓋,y為覆蓋
-
rm (移除文件或目錄)
語法:
rm [-fir] 文件或目錄
選項(xiàng)與參數(shù):
- -f :就是 force 的意思,忽略不存在的文件,不會出現(xiàn)警告信息;
- -i :互動模式,在刪除前會詢問使用者是否動作
- -r :遞歸刪除啊!最常用在目錄的刪除了!這是非常危險(xiǎn)的選項(xiàng)!!!
將剛剛在 cp 的實(shí)例中創(chuàng)建的 bashrc 刪除掉!
[root@www tmp]# rm -i bashrc rm: remove regular file `bashrc'? y
如果加上 -i 的選項(xiàng)就會主動詢問喔,避免你刪除到錯誤的檔名!
-
mv (移動文件與目錄,或修改名稱)
語法:
[root@www ~]# mv [-fiu] source destination [root@www ~]# mv [options] source1 source2 source3 .... directory
選項(xiàng)與參數(shù):
- -f :force 強(qiáng)制的意思,如果目標(biāo)文件已經(jīng)存在,不會詢問而直接覆蓋;
- -i :若目標(biāo)文件 (destination) 已經(jīng)存在時,就會詢問是否覆蓋!
- -u :若目標(biāo)文件已經(jīng)存在,且 source 比較新,才會升級 (update)
復(fù)制一文件,創(chuàng)建一目錄,將文件移動到目錄中
[root@www ~]# cd /tmp [root@www tmp]# cp ~/.bashrc bashrc [root@www tmp]# mkdir mvtest [root@www tmp]# mv bashrc mvtest
將某個文件移動到某個目錄去,就是這樣做!
將剛剛的目錄名稱更名為 mvtest2
[root@www tmp]# mv mvtest mvtest2
6 磁盤管理
-
df命令:檢查文件系統(tǒng)的磁盤空間占用情況??梢岳迷撁顏慝@取硬盤被占用了多少空間,目前還剩下多少空間等信息。
語法:
df [-ahikHTm] [目錄或文件名]
選項(xiàng)與參數(shù):
-
-a :列出所有的文件系統(tǒng),包括系統(tǒng)特有的 /proc 等文件系統(tǒng);
-
-k :以 KBytes 的容量顯示各文件系統(tǒng);
-
-m :以 MBytes 的容量顯示各文件系統(tǒng);
-
-h :以人們較易閱讀的 GBytes, MBytes, KBytes 等格式自行顯示;
-
-H :以 M=1000K 取代 M=1024K 的進(jìn)位方式;
-
-T :顯示文件系統(tǒng)類型, 連同該 partition 的 filesystem 名稱 (例如 ext3) 也列出;
-
-i :不用硬盤容量,而以 inode 的數(shù)量來顯示
-
實(shí)例 1
將系統(tǒng)內(nèi)所有的文件系統(tǒng)列出來!
[root@www ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/hdc2 9920624 3823112 5585444 41% / /dev/hdc3 4956316 141376 4559108 4% /home /dev/hdc1 101086 11126 84741 12% /boot tmpfs 371332 0 371332 0% /dev/shm
在 Linux 底下如果 df 沒有加任何選項(xiàng),那么默認(rèn)會將系統(tǒng)內(nèi)所有的 (不含特殊內(nèi)存內(nèi)的文件系統(tǒng)與 swap) 都以 1 Kbytes 的容量來列出來!
-
實(shí)例 2
將容量結(jié)果以易讀的容量格式顯示出來
[root@www ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/hdc2 9.5G 3.7G 5.4G 41% / /dev/hdc3 4.8G 139M 4.4G 4% /home /dev/hdc1 99M 11M 83M 12% /boot tmpfs 363M 0 363M 0% /dev/shm
- 實(shí)例 3
將系統(tǒng)內(nèi)的所有特殊文件格式及名稱都列出來
[root@www ~]# df -aT Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/hdc2 ext3 9920624 3823112 5585444 41% / proc proc 0 0 0 - /proc sysfs sysfs 0 0 0 - /sys devpts devpts 0 0 0 - /dev/pts /dev/hdc3 ext3 4956316 141376 4559108 4% /home /dev/hdc1 ext3 101086 11126 84741 12% /boot tmpfs tmpfs 371332 0 371332 0% /dev/shm none binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc sunrpc rpc_pipefs 0 0 0 - /var/lib/nfs/rpc_pipefs
-
實(shí)例 4
將 /etc 底下的可用的磁盤容量以易讀的容量格式顯示
[root@www ~]# df -h /etc Filesystem Size Used Avail Use% Mounted on /dev/hdc2 9.5G 3.7G 5.4G 41% /
?
-
-
du:Linux du 命令也是查看使用空間的,但是與 df 命令不同的是 Linux du 命令是對文件和目錄磁盤使用的空間的查看,還是和df命令有一些區(qū)別的,這里介紹 Linux du 命令。
語法:
du [-ahskm] 文件或目錄名稱
選項(xiàng)與參數(shù):
- -a :列出所有的文件與目錄容量,因?yàn)槟J(rèn)僅統(tǒng)計(jì)目錄底下的文件量而已。
- -h :以人們較易讀的容量格式 (G/M) 顯示;
- -s :列出總量而已,而不列出每個各別的目錄占用容量;
- -S :不包括子目錄下的總計(jì),與 -s 有點(diǎn)差別。
- -k :以 KBytes 列出容量顯示;
- -m :以 MBytes 列出容量顯示;
實(shí)例 1
只列出當(dāng)前目錄下的所有文件夾容量(包括隱藏文件夾):
[root@www ~]# du 8 ./test4 <==每個目錄都會列出來 8 ./test2 ....中間省略.... 12 ./.gconfd <==包括隱藏文件的目錄 220 . <==這個目錄(.)所占用的總量
直接輸入 du 沒有加任何選項(xiàng)時,則 du 會分析當(dāng)前所在目錄里的子目錄所占用的硬盤空間。
實(shí)例 2
將文件的容量也列出來
[root@www ~]# du -a 12 ./install.log.syslog <==有文件的列表了 8 ./.bash_logout 8 ./test4 8 ./test2 ....中間省略.... 12 ./.gconfd 220 .
實(shí)例 3
檢查根目錄底下每個目錄所占用的容量
[root@www ~]# du -sm /* 7 /bin 6 /boot .....中間省略.... 0 /proc .....中間省略.... 1 /tmp 3859 /usr <==系統(tǒng)初期最大就是他了啦! 77 /var
通配符 * 來代表每個目錄。
與 df 不一樣的是,du 這個命令其實(shí)會直接到文件系統(tǒng)內(nèi)去搜尋所有的文件數(shù)據(jù)。
7 vi/vim
-
基本上 vi/vim 共分為三種模式,分別是命令模式(Command mode),輸入模式(Insert mode)和底線命令模式(Last line mode)。 這三種模式的作用分別是:
命令模式:用戶剛剛啟動 vi/vim,便進(jìn)入了命令模式。此狀態(tài)下敲擊鍵盤動作會被Vim識別為命令,而非輸入字符。比如我們此時按下i,并不會輸入一個字符,i被當(dāng)作了一個命令。
以下是常用的幾個命令:
- i 切換到輸入模式,以輸入字符。
- x 刪除當(dāng)前光標(biāo)所在處的字符。
- : 切換到底線命令模式,以在最底一行輸入命令。
若想要編輯文本:啟動Vim,進(jìn)入了命令模式,按下i,切換到輸入模式。命令模式只有一些最基本的命令,因此仍要依靠底線命令模式輸入更多命令。
輸入模式:在命令模式下按下i就進(jìn)入了輸入模式。
在輸入模式中,可以使用以下按鍵:
- 字符按鍵以及Shift組合,輸入字符
- ENTER,回車鍵,換行
- BACK SPACE,退格鍵,刪除光標(biāo)前一個字符
- DEL,刪除鍵,刪除光標(biāo)后一個字符
- 方向鍵,在文本中移動光標(biāo)
- HOME/END,移動光標(biāo)到行首/行尾
- Page Up/Page Down,上/下翻頁
- Insert,切換光標(biāo)為輸入/替換模式,光標(biāo)將變成豎線/下劃線
- ESC,退出輸入模式,切換到命令模式
底線命令模式:在命令模式下按下:(英文冒號)就進(jìn)入了底線命令模式。底線命令模式可以輸入單個或多個字符的命令,可用的命令非常多。
在底線命令模式中,基本的命令有(已經(jīng)省略了冒號):
- q 退出程序
- w 保存文件
按ESC鍵可隨時退出底線命令模式。
-
按鍵說明:第一部分:一般模式可用的光標(biāo)移動、復(fù)制粘貼、搜索替換等
移動光標(biāo)的方法 h 或 向左箭頭鍵(←) 光標(biāo)向左移動一個字符 j 或 向下箭頭鍵(↓) 光標(biāo)向下移動一個字符 k 或 向上箭頭鍵(↑) 光標(biāo)向上移動一個字符 l 或 向右箭頭鍵(→) 光標(biāo)向右移動一個字符 如果你將右手放在鍵盤上的話,你會發(fā)現(xiàn) hjkl 是排列在一起的,因此可以使用這四個按鈕來移動光標(biāo)。 如果想要進(jìn)行多次移動的話,例如向下移動 30 行,可以使用 “30j” 或 “30↓” 的組合按鍵, 亦即加上想要進(jìn)行的次數(shù)(數(shù)字)后,按下動作即可! [Ctrl] + [f] 屏幕『向下』移動一頁,相當(dāng)于 [Page Down]按鍵 (常用) [Ctrl] + [b] 屏幕『向上』移動一頁,相當(dāng)于 [Page Up] 按鍵 (常用) [Ctrl] + [d] 屏幕『向下』移動半頁 [Ctrl] + [u] 屏幕『向上』移動半頁 + 光標(biāo)移動到非空格符的下一行 - 光標(biāo)移動到非空格符的上一行 n 那個 n 表示『數(shù)字』,例如 20 。按下數(shù)字后再按空格鍵,光標(biāo)會向右移動這一行的 n 個字符。例如 20 則光標(biāo)會向后面移動 20 個字符距離。 0 或功能鍵[Home] 這是數(shù)字『 0 』:移動到這一行的最前面字符處 (常用) $ 或功能鍵[End] 移動到這一行的最后面字符處(常用) H 光標(biāo)移動到這個屏幕的最上方那一行的第一個字符 M 光標(biāo)移動到這個屏幕的中央那一行的第一個字符 L 光標(biāo)移動到這個屏幕的最下方那一行的第一個字符 G 移動到這個檔案的最后一行(常用) nG n 為數(shù)字。移動到這個檔案的第 n 行。例如 20G 則會移動到這個檔案的第 20 行(可配合 :set nu) gg 移動到這個檔案的第一行,相當(dāng)于 1G 啊! (常用) n n 為數(shù)字。光標(biāo)向下移動 n 行(常用) 搜索替換 /word 向光標(biāo)之下尋找一個名稱為 word 的字符串。例如要在檔案內(nèi)搜尋 vbird 這個字符串,就輸入 /vbird 即可! (常用) ?word 向光標(biāo)之上尋找一個字符串名稱為 word 的字符串。 n 這個 n 是英文按鍵。代表重復(fù)前一個搜尋的動作。舉例來說, 如果剛剛我們執(zhí)行 /vbird 去向下搜尋 vbird 這個字符串,則按下 n 后,會向下繼續(xù)搜尋下一個名稱為 vbird 的字符串。如果是執(zhí)行 ?vbird 的話,那么按下 n 則會向上繼續(xù)搜尋名稱為 vbird 的字符串! N 這個 N 是英文按鍵。與 n 剛好相反,為『反向』進(jìn)行前一個搜尋動作。 例如 /vbird 后,按下 N 則表示『向上』搜尋 vbird 。 使用 /word 配合 n 及 N 是非常有幫助的!可以讓你重復(fù)的找到一些你搜尋的關(guān)鍵詞! :n1,n2s/word1/word2/g n1 與 n2 為數(shù)字。在第 n1 與 n2 行之間尋找 word1 這個字符串,并將該字符串取代為 word2 !舉例來說,在 100 到 200 行之間搜尋 vbird 并取代為 VBIRD 則: 『:100,200s/vbird/VBIRD/g』。(常用) :1,$s/word1/word2/g 或 :%s/word1/word2/g 從第一行到最后一行尋找 word1 字符串,并將該字符串取代為 word2 !(常用) :1,$s/word1/word2/gc 或 :%s/word1/word2/gc 從第一行到最后一行尋找 word1 字符串,并將該字符串取代為 word2 !且在取代前顯示提示字符給用戶確認(rèn) (confirm) 是否需要取代!(常用) 刪除、復(fù)制與貼上 x, X 在一行字當(dāng)中,x 為向后刪除一個字符 (相當(dāng)于 [del] 按鍵), X 為向前刪除一個字符(相當(dāng)于 [backspace] 亦即是退格鍵) (常用) nx n 為數(shù)字,連續(xù)向后刪除 n 個字符。舉例來說,我要連續(xù)刪除 10 個字符, 『10x』。 dd 剪切游標(biāo)所在的那一整行(常用),用 p/P 可以粘貼。 ndd n 為數(shù)字。剪切光標(biāo)所在的向下 n 行,例如 20dd 則是剪切 20 行(常用),用 p/P 可以粘貼。 d1G 刪除光標(biāo)所在到第一行的所有數(shù)據(jù) dG 刪除光標(biāo)所在到最后一行的所有數(shù)據(jù) d$ 刪除游標(biāo)所在處,到該行的最后一個字符 d0 那個是數(shù)字的 0 ,刪除游標(biāo)所在處,到該行的最前面一個字符 yy 復(fù)制游標(biāo)所在的那一行(常用) nyy n 為數(shù)字。復(fù)制光標(biāo)所在的向下 n 行,例如 20yy 則是復(fù)制 20 行(常用) y1G 復(fù)制游標(biāo)所在行到第一行的所有數(shù)據(jù) yG 復(fù)制游標(biāo)所在行到最后一行的所有數(shù)據(jù) y0 復(fù)制光標(biāo)所在的那個字符到該行行首的所有數(shù)據(jù) y$ 復(fù)制光標(biāo)所在的那個字符到該行行尾的所有數(shù)據(jù) p, P p 為將已復(fù)制的數(shù)據(jù)在光標(biāo)下一行貼上,P 則為貼在游標(biāo)上一行! 舉例來說,我目前光標(biāo)在第 20 行,且已經(jīng)復(fù)制了 10 行數(shù)據(jù)。則按下 p 后, 那 10 行數(shù)據(jù)會貼在原本的 20 行之后,亦即由 21 行開始貼。但如果是按下 P 呢? 那么原本的第 20 行會被推到變成 30 行。 (常用) J 將光標(biāo)所在行與下一行的數(shù)據(jù)結(jié)合成同一行 c 重復(fù)刪除多個數(shù)據(jù),例如向下刪除 10 行,[ 10cj ] u 復(fù)原前一個動作。(常用) [Ctrl]+r 重做上一個動作。(常用) 這個 u 與 [Ctrl]+r 是很常用的指令!一個是復(fù)原,另一個則是重做一次~ 利用這兩個功能按鍵,你的編輯,嘿嘿!很快樂的啦! . 不要懷疑!這就是小數(shù)點(diǎn)!意思是重復(fù)前一個動作的意思。 如果你想要重復(fù)刪除、重復(fù)貼上等等動作,按下小數(shù)點(diǎn)『.』就好了! (常用) 第二部分:一般模式切換到編輯模式的可用的按鈕說明
進(jìn)入輸入或取代的編輯模式 i, I 進(jìn)入輸入模式(Insert mode): i 為『從目前光標(biāo)所在處輸入』, I 為『在目前所在行的第一個非空格符處開始輸入』。 (常用) a, A 進(jìn)入輸入模式(Insert mode): a 為『從目前光標(biāo)所在的下一個字符處開始輸入』, A 為『從光標(biāo)所在行的最后一個字符處開始輸入』。(常用) o, O 進(jìn)入輸入模式(Insert mode): 這是英文字母 o 的大小寫。o 為在目前光標(biāo)所在的下一行處輸入新的一行; O 為在目前光標(biāo)所在的上一行處輸入新的一行!(常用) r, R 進(jìn)入取代模式(Replace mode): r 只會取代光標(biāo)所在的那一個字符一次;R會一直取代光標(biāo)所在的文字,直到按下 ESC 為止;(常用) 上面這些按鍵中,在 vi 畫面的左下角處會出現(xiàn)『–INSERT–』或『–REPLACE–』的字樣。 由名稱就知道該動作了吧!!特別注意的是,我們上面也提過了,你想要在檔案里面輸入字符時, 一定要在左下角處看到 INSERT 或 REPLACE 才能輸入喔! [Esc] 退出編輯模式,回到一般模式中(常用) 第三部分:一般模式切換到指令行模式的可用的按鈕說明
指令行的儲存、離開等指令 :w 將編輯的數(shù)據(jù)寫入硬盤檔案中(常用) :w! 若文件屬性為『只讀』時,強(qiáng)制寫入該檔案。不過,到底能不能寫入, 還是跟你對該檔案的檔案權(quán)限有關(guān)啊! :q 離開 vi (常用) :q! 若曾修改過檔案,又不想儲存,使用 ! 為強(qiáng)制離開不儲存檔案。 注意一下啊,那個驚嘆號 (!) 在 vi 當(dāng)中,常常具有『強(qiáng)制』的意思~ :wq 儲存后離開,若為 :wq! 則為強(qiáng)制儲存后離開 (常用) ZZ 這是大寫的 Z 喔!如果修改過,保存當(dāng)前文件,然后退出!效果等同于(保存并退出) ZQ 不保存,強(qiáng)制退出。效果等同于 :q!。 :w [filename] 將編輯的數(shù)據(jù)儲存成另一個檔案(類似另存新檔) :r [filename] 在編輯的數(shù)據(jù)中,讀入另一個檔案的數(shù)據(jù)。亦即將 『filename』 這個檔案內(nèi)容加到游標(biāo)所在行后面 :n1,n2 w [filename] 將 n1 到 n2 的內(nèi)容儲存成 filename 這個檔案。 :! command 暫時離開 vi 到指令行模式下執(zhí)行 command 的顯示結(jié)果!例如 『:! ls /home』即可在 vi 當(dāng)中察看 /home 底下以 ls 輸出的檔案信息! vim 環(huán)境的變更 :set nu 顯示行號,設(shè)定之后,會在每一行的前綴顯示該行的行號 :set nonu 與 set nu 相反,為取消行號!
8 yum
-
yum( Yellow dog Updater, Modified)是一個在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端軟件包管理器。基于 RPM 包管理,能夠從指定的服務(wù)器自動下載 RPM 包并且安裝,可以自動處理依賴性關(guān)系,并且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。yum 提供了查找、安裝、刪除某一個、一組甚至全部軟件包的命令,而且命令簡潔而又好記。
-
yum 語法
yum [options] [command] [package ...]
- **options:**可選,選項(xiàng)包括-h(幫助),-y(當(dāng)安裝過程提示選擇全部為 “yes”),-q(不顯示安裝的過程)等等。
- **command:**要進(jìn)行的操作。
- **package:**安裝的包名。
-
yum常用命令
-
- 列出所有可更新的軟件清單命令:yum check-update
-
- 更新所有軟件命令:yum update
-
- 僅安裝指定的軟件命令:yum install <package_name>
-
- 僅更新指定的軟件命令:yum update <package_name>
-
- 列出所有可安裝的軟件清單命令:yum list
-
- 刪除軟件包命令:yum remove <package_name>
-
- 查找軟件包命令:yum search
-
- 清除緩存命令:
- yum clean packages: 清除緩存目錄下的軟件包
- yum clean headers: 清除緩存目錄下的 headers
- yum clean oldheaders: 清除緩存目錄下舊的 headers
- yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除緩存目錄下的軟件包及舊的 headers
-
9 apt
-
apt(Advanced Packaging Tool)是一個在 Debian 和 Ubuntu 中的 Shell 前端軟件包管理器。apt 命令提供了查找、安裝、升級、刪除某一個、一組甚至全部軟件包的命令,而且命令簡潔而又好記。apt 命令執(zhí)行需要超級管理員權(quán)限(root)。
-
apt 語法
apt [options] [command] [package ...]
- **options:**可選,選項(xiàng)包括 -h(幫助),-y(當(dāng)安裝過程提示選擇全部為"yes"),-q(不顯示安裝的過程)等等。
- **command:**要進(jìn)行的操作。
- package:安裝的包名。
-
apt 常用命令
-
列出所有可更新的軟件清單命令:sudo apt update
-
升級軟件包:sudo apt upgrade
列出可更新的軟件包及版本信息:apt list --upgradeable
升級軟件包,升級前先刪除需要更新軟件包:sudo apt full-upgrade
-
安裝指定的軟件命令:sudo apt install <package_name>
安裝多個軟件包:sudo apt install <package_1> <package_2> <package_3>
-
更新指定的軟件命令:sudo apt update <package_name>
-
顯示軟件包具體信息,例如:版本號,安裝大小,依賴關(guān)系等等:sudo apt show <package_name>
-
刪除軟件包命令:sudo apt remove <package_name>
-
清理不再使用的依賴和庫文件: sudo apt autoremove
-
移除軟件包及配置文件: sudo apt purge <package_name>
-
查找軟件包命令: sudo apt search
-
列出所有已安裝的包:apt list --installed
-
列出所有已安裝的包的版本信息:apt list --all-versions
-
10 同步命令
- scp:scp 是 secure copy 的縮寫, scp 是 linux 系統(tǒng)下基于 ssh 登陸進(jìn)行安全的遠(yuǎn)程文件拷貝命令。
語法:
scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 [...] [[user@]host2:]file2
參數(shù)說明:
- -1: 強(qiáng)制scp命令使用協(xié)議ssh1
- -2: 強(qiáng)制scp命令使用協(xié)議ssh2
- -4: 強(qiáng)制scp命令只使用IPv4尋址
- -6: 強(qiáng)制scp命令只使用IPv6尋址
- -B: 使用批處理模式(傳輸過程中不詢問傳輸口令或短語)
- -C: 允許壓縮。(將-C標(biāo)志傳遞給ssh,從而打開壓縮功能)
- -p:保留原文件的修改時間,訪問時間和訪問權(quán)限。
- -q: 不顯示傳輸進(jìn)度條。
- -r: 遞歸復(fù)制整個目錄。
- -v:詳細(xì)方式顯示輸出。scp和ssh(1)會顯示出整個過程的調(diào)試信息。這些信息用于調(diào)試連接,驗(yàn)證和配置問題。
- -c cipher: 以cipher將數(shù)據(jù)傳輸進(jìn)行加密,這個選項(xiàng)將直接傳遞給ssh。
- -F ssh_config: 指定一個替代的ssh配置文件,此參數(shù)直接傳遞給ssh。
- -i identity_file: 從指定文件中讀取傳輸時使用的密鑰文件,此參數(shù)直接傳遞給ssh。
- -l limit: 限定用戶所能使用的帶寬,以Kbit/s為單位。
- -o ssh_option: 如果習(xí)慣于使用ssh_config(5)中的參數(shù)傳遞方式,
- -P port:注意是大寫的P, port是指定數(shù)據(jù)傳輸用到的端口號
- -S program: 指定加密傳輸時所使用的程序。此程序必須能夠理解ssh(1)的選項(xiàng)。
用法示例:
# 復(fù)制當(dāng)前主機(jī)的fyq文件夾到遠(yuǎn)程主機(jī)上的/media/目錄下
scp -r /media/fyq F@192.168.10.1:/media/
# 也可以同時操作兩臺遠(yuǎn)程主機(jī)
scp -r F@192.168.10.1:/media/fyq F@192.168.10.2:/media/
- rsync 是一個常用的 Linux 應(yīng)用程序,用于文件同步。它可以在本地計(jì)算機(jī)與遠(yuǎn)程計(jì)算機(jī)之間,或者兩個本地目錄之間同步文件(但不支持兩臺遠(yuǎn)程計(jì)算機(jī)之間的同步)。它也可以當(dāng)作文件復(fù)制工具,替代
cp
和mv
命令。它名稱里面的r
指的是 remote,rsync 其實(shí)就是“遠(yuǎn)程同步”(remote sync)的意思。與其他文件傳輸工具(如 FTP 或 scp)不同,rsync 的最大特點(diǎn)是會檢查發(fā)送方和接收方已有的文件,僅傳輸有變動的部分(默認(rèn)規(guī)則是文件大小或修改時間有變動)。
安裝
# Ubuntu
sudo apt-get install rsync # Red Hat/CentOs
sudo yum install rsync # Arch Linux
sudo pacman -S rsync
使用參數(shù)
-
-r:-r表示遞歸,即包含子目錄。
# 本機(jī)使用 rsync 命令時,可以作為cp和mv命令的替代方法,將源目錄拷貝到目標(biāo)目錄。-r表示遞歸,即包含子目錄。注意,-r是必須的,否則 rsync 運(yùn)行不會成功。source目錄表示源目錄,destination表示目標(biāo)目錄。 rsync -r source destination # 有多個文件或目錄需要同步 rsync -r source1 source2 destination
-
-a:-a參數(shù)可以替代-r,除了可以遞歸同步以外,還可以同步元信息(比如修改時間、權(quán)限等)。由于 rsync 默認(rèn)使用文件大小和修改時間決定文件是否需要更新,所以-a比-r更有用。
# 目標(biāo)目錄destination如果不存在,rsync 會自動創(chuàng)建。執(zhí)行命令后,源目錄source被完整地復(fù)制到了目標(biāo)目錄destination下面,即形成了destination/source的目錄結(jié)構(gòu)。 rsync -a source destination # 如果只想同步源目錄source里面的內(nèi)容到目標(biāo)目錄destination,則需要在源目錄后面加上斜杠。 rsync -a source/ destination
-
-n:如果不確定 rsync 執(zhí)行后會產(chǎn)生什么結(jié)果,可以先用
-n
或--dry-run
參數(shù)模擬執(zhí)行的結(jié)果。上面命令中,-n
參數(shù)模擬命令執(zhí)行的結(jié)果,并不真的執(zhí)行命令。-v
參數(shù)則是將結(jié)果輸出到終端,這樣就可以看到哪些內(nèi)容會被同步。rsync -anv source/ destination
-
–delete:默認(rèn)情況下,rsync 只確保源目錄的所有內(nèi)容(明確排除的文件除外)都復(fù)制到目標(biāo)目錄。它不會使兩個目錄保持相同,并且不會刪除文件。如果要使得目標(biāo)目錄成為源目錄的鏡像副本,則必須使用
--delete
參數(shù),這將刪除只存在于目標(biāo)目錄、不存在于源目錄的文件。rsync -av --delete source/ destination
-
–exclude:有時,我們希望同步時排除某些文件或目錄,這時可以用
--exclude
參數(shù)指定排除模式。# 排除所有txt文件 rsync -av --exclude='*.txt' source/ destination 或者 rsync -av --exclude '*.txt' source/ destination # rsync 會同步以“點(diǎn)”開頭的隱藏文件,如果要排除隱藏文件,可以這樣寫--exclude=".*" rsync -av --exclude=".*" source/ destination # 如果要排除某個目錄里面的所有文件,但不希望排除目錄本身,可以寫成下面這樣。 rsync -av --exclude 'dir1/*' source/ destination # 多個排除模式,可以用多個--exclude參數(shù)。 rsync -av --exclude 'file1.txt' --exclude 'dir1/*' source/ destination # 多個排除模式也可以利用 Bash 的大擴(kuò)號的擴(kuò)展功能,只用一個--exclude參數(shù)。 rsync -av --exclude={'file1.txt','dir1/*'} source/ destination # 如果排除模式很多,可以將它們寫入一個文件,每個模式一行,然后用--exclude-from參數(shù)指定這個文件。 rsync -av --exclude-from='exclude-file.txt' source/ destination
-
–include:
--include
參數(shù)用來指定必須同步的文件模式,往往與--exclude
結(jié)合使用。# 上面命令指定同步時,排除所有文件,但是會包括 TXT 文件。 rsync -av --include="*.txt" --exclude='*' source/ destination
-
-a,–archive:
-a
、--archive
參數(shù)表示存檔模式,保存所有的元數(shù)據(jù),比如修改時間(modification time)、權(quán)限、所有者等,并且軟鏈接也會同步過去。 -
–append:
--append
參數(shù)指定文件接著上次中斷的地方,繼續(xù)傳輸。 -
–append-verify:
--append-verify
參數(shù)跟--append
參數(shù)類似,但會對傳輸完成后的文件進(jìn)行一次校驗(yàn)。如果校驗(yàn)失敗,將重新發(fā)送整個文件。 -
-b,–backup:
-b
、--backup
參數(shù)指定在刪除或更新目標(biāo)目錄已經(jīng)存在的文件時,將該文件更名后進(jìn)行備份,默認(rèn)行為是刪除。更名規(guī)則是添加由--suffix
參數(shù)指定的文件后綴名,默認(rèn)是~
。 -
–backup-dir:
--backup-dir
參數(shù)指定文件備份時存放的目錄,比如--backup-dir=/path/to/backups
。 -
–bwlimit:
--bwlimit
參數(shù)指定帶寬限制,默認(rèn)單位是 KB/s,比如--bwlimit=100
。 -
-c,–checksum:
-c
、--checksum
參數(shù)改變rsync
的校驗(yàn)方式。默認(rèn)情況下,rsync 只檢查文件的大小和最后修改日期是否發(fā)生變化,如果發(fā)生變化,就重新傳輸;使用這個參數(shù)以后,則通過判斷文件內(nèi)容的校驗(yàn)和,決定是否重新傳輸。 -
--delete
參數(shù)刪除只存在于目標(biāo)目錄、不存在于源目標(biāo)的文件,即保證目標(biāo)目錄是源目標(biāo)的鏡像。-e
參數(shù)指定使用 SSH 協(xié)議傳輸數(shù)據(jù)。--exclude
參數(shù)指定排除不進(jìn)行同步的文件,比如--exclude="*.iso"
。--exclude-from
參數(shù)指定一個本地文件,里面是需要排除的文件模式,每個模式一行。--existing
、--ignore-non-existing
參數(shù)表示不同步目標(biāo)目錄中不存在的文件和目錄。-h
參數(shù)表示以人類可讀的格式輸出。-h
、--help
參數(shù)返回幫助信息。-i
參數(shù)表示輸出源目錄與目標(biāo)目錄之間文件差異的詳細(xì)情況。--ignore-existing
參數(shù)表示只要該文件在目標(biāo)目錄中已經(jīng)存在,就跳過去,不再同步這些文件。--include
參數(shù)指定同步時要包括的文件,一般與--exclude
結(jié)合使用。--link-dest
參數(shù)指定增量備份的基準(zhǔn)目錄。-m
參數(shù)指定不同步空目錄。--max-size
參數(shù)設(shè)置傳輸?shù)淖畲笪募拇笮∠拗?#xff0c;比如不超過200KB(--max-size='200k'
)。--min-size
參數(shù)設(shè)置傳輸?shù)淖钚∥募拇笮∠拗?#xff0c;比如不小于10KB(--min-size=10k
)。-n
參數(shù)或--dry-run
參數(shù)模擬將要執(zhí)行的操作,而并不真的執(zhí)行。配合-v
參數(shù)使用,可以看到哪些內(nèi)容會被同步過去。-P
參數(shù)是--progress
和--partial
這兩個參數(shù)的結(jié)合。--partial
參數(shù)允許恢復(fù)中斷的傳輸。不使用該參數(shù)時,rsync
會刪除傳輸?shù)揭话氡淮驍嗟奈募?#xff1b;使用該參數(shù)后,傳輸?shù)揭话氲奈募矔降侥繕?biāo)目錄,下次同步時再恢復(fù)中斷的傳輸。一般需要與--append
或--append-verify
配合使用。--partial-dir
參數(shù)指定將傳輸?shù)揭话氲奈募4娴揭粋€臨時目錄,比如--partial-dir=.rsync-partial
。一般需要與--append
或--append-verify
配合使用。--progress
參數(shù)表示顯示進(jìn)展。-r
參數(shù)表示遞歸,即包含子目錄。--remove-source-files
參數(shù)表示傳輸成功后,刪除發(fā)送方的文件。--size-only
參數(shù)表示只同步大小有變化的文件,不考慮文件修改時間的差異。--suffix
參數(shù)指定文件名備份時,對文件名添加的后綴,默認(rèn)是~
。-u
、--update
參數(shù)表示同步時跳過目標(biāo)目錄中修改時間更新的文件,即不同步這些有更新的時間戳的文件。-v
參數(shù)表示輸出細(xì)節(jié)。-vv
表示輸出更詳細(xì)的信息,-vvv
表示輸出最詳細(xì)的信息。--version
參數(shù)返回 rsync 的版本。-z
參數(shù)指定同步時壓縮數(shù)據(jù)。
遠(yuǎn)程同步
-
rsync 除了支持本地兩個目錄之間的同步,也支持遠(yuǎn)程同步。它可以將本地內(nèi)容,同步到遠(yuǎn)程服務(wù)器。
-
# 將本地內(nèi)容,同步到遠(yuǎn)程服務(wù)器。 rsync -av source/ username@remote_host:destination # 將遠(yuǎn)程內(nèi)容同步到本地。 rsync -av username@remote_host:source/ destination # 早期 rsync 不使用 SSH 協(xié)議,需要用-e參數(shù)指定協(xié)議,后來才改的。所以,下面-e ssh可以省略。 sync -av -e ssh source/ user@remote_host:/destination # 如果 ssh 命令有附加的參數(shù),則必須使用-e參數(shù)指定所要執(zhí)行的 SSH 命令。 rsync -av -e 'ssh -p 2234' source/ user@remote_host:/destination
-
除了使用 SSH,如果另一臺服務(wù)器安裝并運(yùn)行了 rsync 守護(hù)程序,則也可以用
rsync://
協(xié)議(默認(rèn)端口873)進(jìn)行傳輸。具體寫法是服務(wù)器與目標(biāo)目錄之間使用雙冒號分隔::
。rsync -av source/ 192.168.122.32::module/destination # 注意,上面地址中的module并不是實(shí)際路徑名,而是 rsync 守護(hù)程序指定的一個資源名,由管理員分配。 # 如果想知道 rsync 守護(hù)程序分配的所有 module 列表,可以執(zhí)行下面命令。 rsync rsync://192.168.122.32 # rsync 協(xié)議除了使用雙冒號,也可以直接用rsync://協(xié)議指定地址。 rsync -av source/ rsync://192.168.122.32/module/destination z
增量備份
-
rsync 的最大特點(diǎn)就是它可以完成增量備份,也就是默認(rèn)只復(fù)制有變動的文件。除了源目錄與目標(biāo)目錄直接比較,rsync 還支持使用基準(zhǔn)目錄,即將源目錄與基準(zhǔn)目錄之間變動的部分,同步到目標(biāo)目錄。具體做法是,第一次同步是全量備份,所有文件在基準(zhǔn)目錄里面同步一份。以后每一次同步都是增量備份,只同步源目錄與基準(zhǔn)目錄之間有變動的部分,將這部分保存在一個新的目標(biāo)目錄。這個新的目標(biāo)目錄之中,也是包含所有文件,但實(shí)際上,只有那些變動過的文件是存在于該目錄,其他沒有變動的文件都是指向基準(zhǔn)目錄文件的硬鏈接。
# --link-dest參數(shù)用來指定同步時的基準(zhǔn)目錄。 rsync -a --delete --link-dest /compare/path /source/path /target/path # 上面命令中,--link-dest參數(shù)指定基準(zhǔn)目錄/compare/path,然后源目錄/source/path跟基準(zhǔn)目錄進(jìn)行比較,找出變動的文件,將它們拷貝到目標(biāo)目錄/target/path。那些沒變動的文件則會生成硬鏈接。這個命令的第一次備份時是全量備份,后面就都是增量備份了。