Linux 文件命令精通指南
成都創(chuàng)新互聯(lián)10多年成都企業(yè)網(wǎng)站建設(shè)服務(wù);為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計(jì)及高端網(wǎng)站定制服務(wù),成都企業(yè)網(wǎng)站建設(shè)及推廣,對成都被動防護(hù)網(wǎng)等多個(gè)領(lǐng)域擁有多年的網(wǎng)站營銷經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。
作者:Sheryl Calish
為剛接觸 Linux 文件命令的初學(xué)者提供的速成教程
雖然 GUI 桌面(如 KDE 和 GNOME)能夠幫助用戶利用 Linux 特性,而無需關(guān)于命令行接口的功能知識,但還是經(jīng)常會需要更多的功能和靈活性。而且,基本熟悉這些命令對于在 shell 腳本中正確地使某些功能自動化仍然是必需的。
這篇文章是關(guān)于 Linux 文件命令的一個(gè)“速成教程”,它是為那些剛接觸這個(gè)操作系統(tǒng)或者只是需要補(bǔ)充這方面知識的用戶提供的。它包含了對一些更有用的命令的一個(gè)簡明的概述以及關(guān)于它們的最強(qiáng)大的應(yīng)用的指導(dǎo)。下面包含的信息 — 結(jié)合一些實(shí)驗(yàn) — 將使您能夠容易地掌握這些基本的命令。(注意:當(dāng)涉及到一個(gè)與 Oracle 集群文件系統(tǒng) (OCFS) 結(jié)合的內(nèi)核時(shí),這些命令中的某些命令的行為可能會稍微有所不同。在此情況下,Oracle 提供了一個(gè) OCFS 工具集,該工具集可以為文件命令應(yīng)用提供一個(gè)更好的選擇。)
注意,這里包含的所有示例都在 SUSE Linux 8.0 Professional 上進(jìn)行了測試。雖然沒有理由相信它們在其它的系統(tǒng)上將不能工作,但如果出現(xiàn)問題,您應(yīng)當(dāng)查看您的文檔,以了解可能的變化。
背景概念
在深入研究規(guī)范之前,讓我們回顧一些基礎(chǔ)知識。
文件和命令
在 Linux/UNIX 操作系統(tǒng)中,所有事物都被當(dāng)作文件來處理:硬件設(shè)備(包括鍵盤和終端)、目錄、命令本身,當(dāng)然還有文件。這個(gè)奇怪的慣例實(shí)際上是 Linux/UNIX 的能力和靈活性的基礎(chǔ)。
大多數(shù)(幾乎是全部)的命令形式如下:
command [option] [source file(s)] [target file]
獲取幫助
最有用的命令之一是那些提供幫助的命令(特別是對那些學(xué)習(xí) Linux 的人而言)。Linux 中的兩個(gè)重要的信息來源是聯(lián)機(jī)參考手冊,或 man 頁面和 whatis 工具。您可以用 whatis 命令來訪問一個(gè)不熟悉的命令的 man 頁面。
$ whatis echo
要了解關(guān)于這個(gè)命令的更多信息,可以使用:
$ man echo
如果您不知道某個(gè)特殊任務(wù)所需的命令,您可以用 man -k (也稱為 apropos)和一個(gè)主題來生成可能的命令。例如:
$ man -k files
一個(gè)很有用但常常被忽視的命令可以提供關(guān)于使用 man 本身的信息:
$ man man
您可以用 SPACEBAR 來瀏覽任意的 man 頁面;UP ARROW 將向上翻滾文件。.要退出,則輸入 q,!,或 CTRL-Z。
用戶類別
記得那句名言“所有動物一例平等但有些動物比其他動物更加平等”嗎?在 Linux 世界中,根用戶掌管一切。
根用戶可以以另一個(gè)用戶名 su (源自 "superuser")登錄。要執(zhí)行諸如添加一個(gè)新用戶、打印機(jī)或文件系統(tǒng)之類的任務(wù),必須作為根用戶登錄或者用 su 命令和根用戶密碼切換到超級用戶。系統(tǒng)文件(包括控制初始化過程的系統(tǒng)文件)歸根用戶所有。雖然可能允許普通用戶對它們進(jìn)行讀操作,但出于系統(tǒng)安全性的原因,編輯的權(quán)利將留給根用戶。
BASH shell
雖然提供了其它的 shell,但 BASH (Bourne Again Shell) 是 Linux 的默認(rèn) shell。它結(jié)合了與它同名的 Bourne shell 的特性和 Korn、C 和 TCSH shell 的特性。
BASH 內(nèi)置的命令 history 默認(rèn)記錄最后輸入的 500 條命令??梢酝ㄟ^在命令提示符下輸入 history 來查看它們。要檢索某個(gè)特定的命令,可以在命令提示符下按 UP ARROW 或 DOWN ARROW,或在歷史列表中輸入它的編號,并在編號前面加上 "!",例如:
$ !49
您還可以通過一條命令在歷史列表中離位置最靠前的項(xiàng)目的距離來執(zhí)行該命令:如果在歷史列表中有 53 個(gè)事件,$ !-3 將執(zhí)行事件號 51。
像 UNIX/Linux 世界的其它 shell 一樣,BASH 使用了特殊的環(huán)境變量來方便系統(tǒng)管理。例如:
HOME,用戶主目錄
PATH,Linux 用來搜索您輸入的命令的可執(zhí)行鏡像的搜索路徑
HISTSIZE,系統(tǒng)保存的歷史事件的數(shù)量
除了這些保留的關(guān)鍵字之外,您還可以定義您自己的環(huán)境變量。例如,Oracle 使用 ORACLE_HOME (還有其它一些變量),要使 Oracle 安裝成功完成,必須在您的環(huán)境中設(shè)置這些變量。
可以在提示符下臨時(shí)設(shè)置變量:
$HISTSIZE=100
或者,在 /etc/profile (需要根用戶權(quán)限)中進(jìn)行系統(tǒng)范圍的永久設(shè)置,或在 .profile 中進(jìn)行局部永久設(shè)置。
可以通過 echo 命令,并用一個(gè) $ 符號來訪問一個(gè)環(huán)境變量的值,進(jìn)而查看該值。
$ echo $HOME
/home/bluher
可以用 env 命令來查看當(dāng)前所有的環(huán)境變量。
正則表達(dá)式和通配符
許多 Linux 命令使用通配符 * 和 ? 來匹配任意數(shù)量的字符或分別匹配任意的單個(gè)字符;正則模式匹配表達(dá)式利用一個(gè)句點(diǎn) (.) 來匹配除“換行符”之外的任意單個(gè)字符。這兩種情況下都使用方括號 ([ ]) 來匹配除“*”號之外的字符組。不過,* 號在各種情況下有類似但不同的意義:雖然它在 shell 中將匹配一個(gè)或更多的字符,但在正則表達(dá)式中,它匹配上述字符的零個(gè)或更多的實(shí)例。一些命令(如 egrep 和 awk)使用了一組更廣泛的特殊字符來進(jìn)行模式匹配。
文件處理命令
剖析一個(gè)文件列表
ls 命令用來查看用戶有執(zhí)行權(quán)限的任意目錄中的文件列表,該命令有許多有趣的選項(xiàng)。例如:
$ ls -liah *
22684 -rw-r--r-- 1 bluher users 952 Dec 28 18:43 .profile
19942 -rw-r--r-- 1 scalish users 30 Jan 3 20:00 test2.out
925 -rwxr-xr-x 1 scalish users 378 Sep 2 2002 test.sh
上面的列表顯示 8 列:
第 1 列指示文件的 inode,因?yàn)槲覀兪褂昧?-i 選項(xiàng)。剩下的列通過 -l 選項(xiàng)來進(jìn)行正常顯示。
第 2 列顯示文件類型和文件訪問權(quán)限。
第3 列顯示鏈接數(shù),包括目錄。
第 4 和第 5 列顯示文件的所有者和組所有者。這里,所有者 "bluher" 屬于組 "users"。
第 6 列顯示文件大?。▎挝粸樗@示的單位,而不是默認(rèn)的字節(jié)數(shù),因?yàn)槲覀兪褂昧?-h 選項(xiàng)。
第 7 列顯示日期(它看起來像是三列),包括月、日和年,以及當(dāng)天的時(shí)間。
第 8 列顯示文件名。在選項(xiàng)列表中使用 -a 將使列表中包含隱藏文件(如 .profile)的列表。
處理文件
可以移動 (mv)、復(fù)制 (cp) 或刪除 (rm) 文件和目錄。明智地使用 -i 選項(xiàng),以獲得確認(rèn)通常是個(gè)不錯(cuò)的主意。
$ cp -i ls.out ls2.out
cpverwrite `ls2.out'?
mv 命令允許使用 -b 選項(xiàng),這將在移動文件之前作一個(gè)備份拷貝。rm 和 cp 接受功能強(qiáng)大但卻危險(xiǎn)的 -r 選項(xiàng),它將在一個(gè)目錄和它的文件上遞歸執(zhí)行。
$ rm -ir Test
rm:descend into directory `Test'? y
可以用 mkdir 來創(chuàng)建目錄,用 rmdir 來刪除目錄。不過,因?yàn)椴荒苡?rmdir 來刪除包含文件的目錄,所以使用 rm 加 -r 選項(xiàng)通常要更方便些。
出于安全的原因,所有的文件都有所有權(quán)和保護(hù)。文件訪問權(quán)限(或文件模式)包含之前提到的相同的 10 個(gè)字符:
第一個(gè)字符指示文件類型。最常見的是 - 代表文件,d 代表目錄,而 l 代表鏈接。
接下來的 9 個(gè)字符是三種用戶類別的訪問權(quán)限:文件所有者(字符 2-4),用戶組 (5-7) 和其它 (8-10),其中 r 表示讀權(quán)限,w 表示寫權(quán)限,x 指示一個(gè)文件上的執(zhí)行權(quán)限。破折號 - 如果出現(xiàn)在這九個(gè)位置的任意一個(gè),則指示這個(gè)操作對該類別的用戶禁止。
可以使用 chmod 命令通過字符符號或二進(jìn)制掩碼來設(shè)置訪問權(quán)限。要使用二進(jìn)制掩碼,必須將三個(gè)權(quán)限組的字符表示轉(zhuǎn)換成二進(jìn)制格式,然后轉(zhuǎn)換成八進(jìn)制格式:
用戶類別: 所有者 用戶組 其它
字符表示: rwx r-x r--
二進(jìn)制表示: 111 101 100
八進(jìn)制表示: 7 5 4
將寫權(quán)限賦予用戶組,您可以使用:
chmod g+w test.sh or chmod 774 test.sh
用 umask 命令,在 /etc/init.dev 文件中進(jìn)行系統(tǒng)范圍內(nèi)的、或在 .profile 文件中進(jìn)行的本地的文件權(quán)限默認(rèn)設(shè)置。這個(gè)命令指示用 777 減去這個(gè)數(shù)字來獲取默認(rèn)的權(quán)限:
$ umask 022
這將為用戶創(chuàng)建的所有新文件生成一個(gè)默認(rèn)的文件權(quán)限 755。
可以用 chown 來修改文件的所有權(quán):
$ chown bluher ls.out
這里,bluher 是新的文件所有者。類似地,組成員資格將按以下方式修改:
$ chgrp devgrp ls.out
這里,devgrp 是新的用戶組。
ls 不提供哪些文件是文本的,哪些文件是二進(jìn)制的的信息。要了解這個(gè)信息,您可以使用 file * 命令。
重命名文件
賦予一個(gè)文件多個(gè)名字的兩種流行的方法是利用鏈接和 alias 命令。Alias 可以用來為一個(gè)更長的命令重新起一個(gè)更方便的名字:
$ alias ll='ls -l'
$ ll
注意單引號的使用,這使得 BASH 將該項(xiàng)目傳遞給別名,而不是自己估計(jì)它。別名還可用作較長的路徑名的縮寫:
$ alias jdev9i=/jdev9i/jdev/bin/jdev
關(guān)于 alias 和它的反命令 unalias 的更多信息,請查看 BASH 的 man 頁面的 "SHELL BUILTIN COMMANDS" 子部分。在最后一個(gè)例子中,定義了一個(gè)環(huán)境變量來實(shí)現(xiàn)相同的結(jié)果。
$ export JDEV_HOME=/jdev9i/jdev/bin/jdev
$ echo $JDEV_HOME
/jdev9i/jdev/bin/jdev
$ $JDEV_HOME
鏈接允許幾個(gè)文件名引用單個(gè)源文件,格式如下:
ln [-s] fileyouwanttolinkto newname
單獨(dú)的 ln 命令創(chuàng)建到文件的一個(gè)硬鏈接,而使用 -s 選項(xiàng)來創(chuàng)建一個(gè)符號鏈接。簡而言之,一個(gè)硬鏈接幾乎不能和原始的文件區(qū)分開(除了這兩個(gè)文件的 inode 將相同之外)。符號鏈接較容易區(qū)分,因?yàn)樗鼈兂霈F(xiàn)在一個(gè)長的文件列表中,并用 -; 來指示源文件,l 指示文件類型。
查看和查找文件
文件過濾器
用來讀取文件內(nèi)容和在文件內(nèi)容上執(zhí)行操作的命令有時(shí)被稱為 1濾器。sed 和 awk 命令是兩個(gè)濾波器的例子,因?yàn)樵谝郧暗?OTN 文章中有它們詳細(xì)的討論,在這里將略過。
諸如 cat、 more 和 less 之類的命令讓您能夠從命令行查看一個(gè)文本文件的內(nèi)容,而無需調(diào)用編輯器。Cat 是 "concatenate" 的縮寫,它將默認(rèn)地在標(biāo)準(zhǔn)輸出(顯示屏)上顯示文件內(nèi)容。和 cat 一起提供的最有趣的選項(xiàng)之一是 -n 選項(xiàng),它用編號的輸出行來顯示文件內(nèi)容。
$ cat -n test.out
1 This is a test.
因?yàn)?cat 一次性輸出文件中的所有行,所以您可能更喜歡用 more 和 less,因?yàn)樗鼈兌家淮屋敵鲆黄恋奈募?nèi)容。Less 是 more 的一個(gè)增強(qiáng)的版本,它允許用來自 vi 文本編輯器的關(guān)鍵命令來增強(qiáng)文件查看。例如,d 向前翻滾、b 向后翻滾 N 行(如果 N 是在 d 或 b 之前指定的)。為 N 輸入的值成為隨后的 d 命令的默認(rèn)值。man 頁面實(shí)用工具使用 less 來顯示使用說明的內(nèi)容。
重定向和管道
重定向允許將命令輸出重定向到文件中,而不是標(biāo)準(zhǔn)輸出,或者類似地,也可重定向輸入。重定向的標(biāo)準(zhǔn)符號 ; 創(chuàng)建一個(gè)新的文件。;; 符號將輸出添加到一個(gè)現(xiàn)有的文件中:
$ more test2.out
Another test.
$ cat test.out ;; test2.out
$ cat test2.out
Another test.
This is a test.
到文件的標(biāo)準(zhǔn)輸入可以用 符號來重定向:
$ cat test2.out
錯(cuò)誤消息用 2; 和 2;; 來重定向和添加,格式如下:
$ command 2; name_of_error_file
要避免無意地覆蓋一個(gè)現(xiàn)有的文件,使用 BASH 內(nèi)置的命令集:
$ set -o noclobber
可以在命令和輸出文件之間用 ;! 符號來重載這個(gè)特性。要關(guān)閉這個(gè)特性,用 +o 代替 -o。
重定向在一個(gè)命令和文件之間、或文件和文件之間工作。重定向語句的一項(xiàng)必須是一個(gè)文件。
管道使用 |符號,并且在命令之間工作。例如,您可以用以下方式將一個(gè)命令的輸出直接發(fā)送到打印機(jī)上:
$ ls -l * | lpr
可以用以下方式快速地找到歷史列表中的一個(gè)命令:
$ history | grep cat
更多的濾波器
Grep、fgrep 和 egrep 都顯示匹配一種模式的行。所有這三個(gè)命令都在文件中搜索指定的模式,如果您想不起來一個(gè)所需文件的名稱,這將非常有用?;靖袷绞牵?/p>
grep [options] PATTERN [FILE...]
$ grep -r 'Subject' nsmail
CTRL-Z 將終止上述或其它任何命令。
grep 的最有用的選項(xiàng)可能是 -s。如果您以除根用戶之外的任何身份搜索系統(tǒng)文件,那么對于每一個(gè)您沒有訪問權(quán)限的文件,都將產(chǎn)生錯(cuò)誤消息。這個(gè)命令禁止那些消息。
Fgrep(也以 grep -F 調(diào)用)只查找固定的字符串,而不是 grep 接收的正則表達(dá)式。而 egrep 接收包含更大范圍的特殊字符(如 “|”,它指示條件 OR 運(yùn)算符)的模式。
$ egrep 'Subject|mailto' *
查找文件
find 命令的 GNU 版本非常強(qiáng)大、靈活并且比 UNIX 系統(tǒng)上存在的經(jīng)典版本更具包容性。它對于涉及到目錄結(jié)構(gòu)的任務(wù)非常有用,包括在文件上查找和執(zhí)行命令。find 命令的基本格式是:
$ find startdirectory options matchcriteria [actionoptions]
如果您知道文件的名稱、或者甚至名稱的一部分,但不知道它所處的目錄,您可以這么做:
$ find .-name 'test*'
./test
./jdevhome/mywork/EmpWS/EmpBC4J/test
與經(jīng)典的 UNIX 系統(tǒng)不同,在 Linux 中不需要在末尾添加 -print 操作,因?yàn)槿绻麤]有指定其它的操作選項(xiàng),就將假定執(zhí)行這個(gè)操作。在目錄起始位置上的一個(gè)點(diǎn) ( . ) 將使 find 在您的工作目錄中開始搜索。兩個(gè)點(diǎn), ..,在父目錄中開始搜索。您可以在任意目錄下開始搜索。
注意,您可以使用通配符作為搜索準(zhǔn)則的一部分(只要用單引號將整個(gè)項(xiàng)目括起來)。
$ find .-name 'test*' -print
./test.out
./test2.out
顯示擁有 .out 擴(kuò)展名的一系列文件:
$ find /home -name '*.out'
不過記住,除非您是作為超級用戶運(yùn)行這個(gè)命令,否則您將可能得到許多的 "ermission denied" 錯(cuò)誤消息。
最強(qiáng)大的搜索工具之一是和 grep 一起使用的 -exec 操作:
$ find .-name '*.html' -exec grep 'mailto:foo@yahoo.com' {} \;
.,查找一個(gè) html 文件,*.html,并在當(dāng)前文件上執(zhí)行 (-exec) grep 命令,{}。當(dāng)使用 -exec 操作時(shí),需要一個(gè)分號 ;,這是用來在使用 find 命令時(shí)執(zhí)行其它一些操作。需要反斜線 \ 和引號來確保這些項(xiàng)目通過 BASH,以使它們由命令而不是 shell 來進(jìn)行解釋。
轉(zhuǎn)自:
先說下常用的情況:
兩臺機(jī)器IP分別為:A.104.238.161.75,B.43.224.34.73。
在A服務(wù)器上操作,將B服務(wù)器上/home/lk/目錄下所有的文件全部復(fù)制到本地的/root目錄下,命令為:scp -r root@43.224.34.73:/home/lk /root。
具體過程為:
[root@XX ~]#scp-r root@43.224.34.73:/home/lk /root
root@43.224.34.73's password: k2.sql100%00.0KB/s00:00? ?
k.zip100%1760.2KB/s00:00? ?
.bash_history? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100%320.0KB/s00:00? ?
.bash_logout? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100%180.0KB/s00:00? ?
.bashrc? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100%2310.2KB/s00:00? ?
k3.sql? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100%00.0KB/s00:00? ?
.bash_profile? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100%1930.2KB/s00:00? ?
[root@XX ~]#ls
在A服務(wù)器上將/root/lk目錄下所有的文件傳輸?shù)紹的/home/lk/cpfile目錄下,命令為:scp -r /root/lk root@43.224.34.73:/home/lk/cpfile。
具體過稱為:
[root@XX lk]#scp-r /root/lk root@43.224.34.73:/home/lk/cpfile
root@43.224.34.73's password: k2.sql100%00.0KB/s00:00? ?
k3.sql? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100%00.0KB/s00:00? ?
.bash_profile? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100%1930.2KB/s00:00? ?
.bash_logout? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100%180.0KB/s00:00? ?
.bash_history? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100%320.0KB/s00:00? ?
k.zip100%1760.2KB/s00:00? ?
.bashrc? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100%2310.2KB/s00:00? ?
[root@XX lk]#
scp在夸機(jī)器復(fù)制的時(shí)候?yàn)榱颂岣邤?shù)據(jù)的安全性,使用了ssh連接和加密方式,如果機(jī)器之間配置了 ssh免密碼登錄 ,那在使用scp的時(shí)候密碼都不用輸入。
命令詳解:
scp是secure?copy的簡寫,用于在Linux下進(jìn)行遠(yuǎn)程拷貝文件的命令,和它類似的命令有cp,不過cp只是在本機(jī)進(jìn)行拷貝不能跨服務(wù)器,而且scp傳輸是加密的。可能會稍微影響一下速度。當(dāng)你服務(wù)器硬盤變?yōu)橹蛔x?read?only?system時(shí),用scp可以幫你把文件移出來。另外,scp還非常不占資源,不會提高多少系統(tǒng)負(fù)荷,在這一點(diǎn)上,rsync就遠(yuǎn)遠(yuǎn)不及它了。雖然?rsync比scp會快一點(diǎn),但當(dāng)小文件眾多的情況下,rsync會導(dǎo)致硬盤I/O非常高,而scp基本不影響系統(tǒng)正常使用。
1.命令格式:
scp?[參數(shù)]?[原路徑]?[目標(biāo)路徑]
2.命令功能:
scp是?secure?copy的縮寫,?scp是linux系統(tǒng)下基于ssh登陸進(jìn)行安全的遠(yuǎn)程文件拷貝命令。linux的scp命令可以在linux服務(wù)器之間復(fù)制文件和目錄。
3.命令參數(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?保留原文件的修改時(shí)間,訪問時(shí)間和訪問權(quán)限。??
-q??不顯示傳輸進(jìn)度條。??
-r??遞歸復(fù)制整個(gè)目錄。??
-v?詳細(xì)方式顯示輸出。scp和ssh(1)會顯示出整個(gè)過程的調(diào)試信息。這些信息用于調(diào)試連接,驗(yàn)證和配置問題。???
-c?cipher??以cipher將數(shù)據(jù)傳輸進(jìn)行加密,這個(gè)選項(xiàng)將直接傳遞給ssh。???
-F?ssh_config??指定一個(gè)替代的ssh配置文件,此參數(shù)直接傳遞給ssh。??
-i?identity_file??從指定文件中讀取傳輸時(shí)使用的密鑰文件,此參數(shù)直接傳遞給ssh。????
-l?limit??限定用戶所能使用的帶寬,以Kbit/s為單位。?????
-o?ssh_option??如果習(xí)慣于使用ssh_config(5)中的參數(shù)傳遞方式,???
-P?port??注意是大寫的P,?port是指定數(shù)據(jù)傳輸用到的端口號???
-S?program??指定加密傳輸時(shí)所使用的程序。此程序必須能夠理解ssh(1)的選項(xiàng)。
4.使用實(shí)例:
scp命令的實(shí)際應(yīng)用概述:??
從本地服務(wù)器復(fù)制到遠(yuǎn)程服務(wù)器:?
(1)?復(fù)制文件:??
命令格式:??
scp?local_file?remote_username@remote_ip:remote_folder??
或者??
scp?local_file?remote_username@remote_ip:remote_file??
或者??
scp?local_file?remote_ip:remote_folder??
或者??
scp?local_file?remote_ip:remote_file??
第1,2個(gè)指定了用戶名,命令執(zhí)行后需要輸入用戶密碼,第1個(gè)僅指定了遠(yuǎn)程的目錄,文件名字不變,第2個(gè)指定了文件名??
第3,4個(gè)沒有指定用戶名,命令執(zhí)行后需要輸入用戶名和密碼,第3個(gè)僅指定了遠(yuǎn)程的目錄,文件名字不變,第4個(gè)指定了文件名???
(2)?復(fù)制目錄:??
命令格式:??
scp?-r?local_folder?remote_username@remote_ip:remote_folder??
或者??
scp?-r?local_folder?remote_ip:remote_folder??
第1個(gè)指定了用戶名,命令執(zhí)行后需要輸入用戶密碼;??
第2個(gè)沒有指定用戶名,命令執(zhí)行后需要輸入用戶名和密碼;
Linux下幾種文件傳輸命令 sz rz sftp scp介紹
1.sftp
Secure Ftp
是一個(gè)基于SSH安全協(xié)議的文件傳輸管理工具。由于它是基于SSH的,會在傳輸過程中對用戶的密碼、數(shù)據(jù)等敏感信息進(jìn)行加密,因此可以有效的防止用戶信息
在傳輸?shù)倪^程中被竊取,比FTP有更高的安全性。在功能方面與FTP很類似,不僅可以傳輸文件數(shù)據(jù),而且可以進(jìn)行遠(yuǎn)程的文件管理(如建立,刪除,查看文件
列表等操作)。Sftp與ftp雖然只有一字之差,但基于的傳輸協(xié)議卻是不同的。因此不能用sftp client去連接ftp server 也不能用
ftp client 去連接 sftp server。
建立連接:sftp user@host
從本地上傳文件:put localpath
下載文件:get remotepath
與遠(yuǎn)程相對應(yīng)的本地操作,只需要在命令前加上”l” 即可,方便好記。
例如:lcd lpwd lmkdir
2.scp
SCP :secure copy (remote file copy program) 也是一個(gè)基于SSH安全協(xié)議的文件傳輸命令。與sftp不同的是,它只提供主機(jī)間的文件傳輸功能,沒有文件管理的功能。
復(fù)制local_file 到遠(yuǎn)程目錄remote_folder下
scp local_file remote_user@host:remote_folder
復(fù)制local_folder 到遠(yuǎn)程remote_folder(需要加參數(shù) -r 遞歸)
scp –r local_folder remote_user@host:remote_folder
以上命令反過來寫就是遠(yuǎn)程復(fù)制到本地
3.sz/rz
sz/rz 是基于ZModem傳輸協(xié)議的命令。對傳輸?shù)臄?shù)據(jù)會進(jìn)行核查,并且有很好的傳輸性能。使用起來更是非常方便,但前提是window端需要有能夠支持ZModem的telnet或者SSH客戶端,例如secureCRT。
首先需要在secureCRT中可以配置相關(guān)的本地下載和上傳目錄,然后用rz、sz命令即可方便的傳輸文件數(shù)據(jù)。
下載數(shù)據(jù)到本地下載目錄:sz filename1 filename2 …
上傳數(shù)據(jù)到遠(yuǎn)程:執(zhí)行rz –be 命令,客戶端會彈出上傳窗口,用戶自行選擇(可多選)要上傳的文件即可。
1. 前言
linux之間傳文件命令用什么命令?本文介紹一種最常用,也是功能強(qiáng)大的文件同步和傳輸工具Rsync,本文提供詳細(xì)傻瓜式教程。
在本教程中,我們將通過實(shí)際使用案例和最常見的rsync選項(xiàng)的詳細(xì)說明向您展示如何使用rsync。
本教程適用于Ubuntu系統(tǒng)、Linux Mint系統(tǒng)、Deepin深度Linux系統(tǒng)、Fedora系統(tǒng)、Debian系統(tǒng)、Elementary OS系統(tǒng)、OpenSUSE系統(tǒng)、CentOS系統(tǒng)、RHEL系統(tǒng),Arch Linux等等GNU Linux發(fā)行版。
2. `rsync`介紹
Rsync是一個(gè)快速且通用的命令行實(shí)用程序,它可以使Windows與Linux之間,Linux與Linux之間傳文件或者Linux與MAC OS之間傳文件?;驈腖inux本地文件系統(tǒng)到遠(yuǎn)程Rsync守護(hù)進(jìn)程之間同步文件和文件夾。它只傳輸源和目標(biāo)之間的差異,從而提供快速增量文件傳輸。
Rsync可以用于鏡像數(shù)據(jù)、增量備份、在Linux系統(tǒng)之間傳文件,也可以用于Linux與Windows之間傳輸文件,還可以替代日常使用的scp、sftp和cp命令,他們一般也用于Linux之間傳文件或者Linux與MAC OS之間傳文件。
3. 如何安裝`Rsync`
rsync實(shí)用程序預(yù)裝在大多數(shù)Linux發(fā)行版和macOS上。你可以輸入以下命令,檢查你的系統(tǒng)是否已安裝:
查看Rsync版本的輸出結(jié)果:
如果您的系統(tǒng)上沒有安裝rsync,您可以使用發(fā)行版的包管理器輕松地安裝它。
在Ubuntu 或者Debian體系的Linux系統(tǒng)上安裝rsync
在CentOS 或者Fedora系統(tǒng)上安裝rsync
4. Rsync命令使用語法
在討論如何使用rsync命令之前,讓我們先回顧一下基本語法。
rsync實(shí)用程序表達(dá)式采用以下形式:
rsync提供了許多選項(xiàng)來控制其行為和功能。最廣泛使用的選項(xiàng)是:
-a, --archive, 歸檔模式, 相當(dāng)于 -rlptgoD。這個(gè)選項(xiàng)告訴rsync遞歸地同步目錄、傳輸特殊設(shè)備和塊設(shè)備、保存符號鏈接、修改時(shí)間、組、所有權(quán)和權(quán)限。
-z, --compress. 這個(gè)選項(xiàng)將強(qiáng)制rsync在傳送文件到目標(biāo)計(jì)算機(jī)時(shí)壓縮數(shù)據(jù)。僅當(dāng)?shù)竭h(yuǎn)程計(jì)算機(jī)的連接很慢時(shí)才使用此選項(xiàng)。
-P, 相當(dāng)于--partial --progress。使用此選項(xiàng)時(shí),rsync將在傳輸期間顯示一個(gè)進(jìn)度條,并保留部分傳輸?shù)奈募?。?dāng)通過緩慢或不穩(wěn)定的網(wǎng)絡(luò)連接傳輸大文件時(shí),它非常有用。
--delete. 使用此選項(xiàng)時(shí),rsync將從目標(biāo)位置刪除無關(guān)文件。它對鏡像很有用。
-q, --quiet。如果希望禁用非錯(cuò)誤消息,請使用此選項(xiàng)。
-e. 此選項(xiàng)允許您選擇不同的遠(yuǎn)程shell。默認(rèn)情況下,rsync被配置為使用ssh。
5. 使用Rsync最基本的功能使Linux之間傳輸文件
要將一個(gè)文件從一個(gè)本地位置復(fù)制到另一個(gè)本地位置,可以運(yùn)行以下命令:
運(yùn)行該命令的用戶必須具有目標(biāo)位置上的讀權(quán)限和目標(biāo)上的寫權(quán)限。
從目標(biāo)位置省略文件名將復(fù)制具有當(dāng)前名稱的文件。如果您想將文件保存在另一個(gè)名稱下,請?jiān)谀繕?biāo)部件上指定新名稱:
比如復(fù)制filename.zip到目標(biāo)目錄并重新把文件名修改為newfilename.zip
在下面的例子中,我們正在創(chuàng)建一個(gè)本地備份我們的網(wǎng)站文件:
如果目標(biāo)目錄不存在,rsync將創(chuàng)建它。
值得一提的是,rsync對后面帶有斜杠/的源目錄提供了不同的處理。如果在源目錄上添加一個(gè)尾隨斜杠,它將只將目錄的內(nèi)容復(fù)制到目標(biāo)目錄。當(dāng)后面的斜杠被省略時(shí),rsync將把源目錄復(fù)制到目標(biāo)目錄中。
6. 如何使用Rsync與遠(yuǎn)程服務(wù)器同步文件(包括上傳下載)
當(dāng)使用rsync進(jìn)行遠(yuǎn)程傳輸時(shí),必須同時(shí)安裝在源機(jī)器和目標(biāo)機(jī)器上。rsync的新版本被配置為使用SSH作為默認(rèn)遠(yuǎn)程shell。
在下面的例子中,我們將一個(gè)目錄從本地轉(zhuǎn)移到遠(yuǎn)程機(jī)器:
如果你需要配置2臺Linux之間免密碼登錄,請查看以下教程:
如果你想把數(shù)據(jù)從遠(yuǎn)程傳輸?shù)奖镜貦C(jī)器,你需要使用遠(yuǎn)程位置作為一個(gè)源:
如果遠(yuǎn)程主機(jī)上的SSH監(jiān)聽的端口不是默認(rèn)的22端口,那么可以使用-e選項(xiàng)指定端口:
比如遠(yuǎn)程服務(wù)器的SSH端口被修改為1234
當(dāng)傳輸大量數(shù)據(jù)時(shí),建議在屏幕會話中運(yùn)行rsync命令或使用-P選項(xiàng):
7. 使用Rsync傳送或同步文件時(shí),排除某些文件或者目錄
當(dāng)使用Rsync排除文件或目錄時(shí),需要使用它們到源位置的相對路徑。
有兩個(gè)選項(xiàng)可以排除文件和目錄。第一個(gè)選項(xiàng)是使用--exclude參數(shù),并在命令行中指定要排除的文件和目錄。
在下面的例子中,我們排除了位于src_directory中的123和abc目錄:
第二個(gè)選項(xiàng)是使用--exclude-from參數(shù),并指定要在文件中排除的文件和目錄。
vi exclude-file.txt
加入需要排除的文件,比如文件file1.c,目錄zcwyou:
8. 總結(jié)
在本教程中,您學(xué)習(xí)了如何使用Rsync在多臺Linux之間傳輸、復(fù)制或同步文件和目錄。在Rsync用戶手冊頁面上有更多關(guān)于Rsync的內(nèi)容。
如果你有任何問題,請留下你的意見。
遠(yuǎn)程連接命令為ssh,一般使用ssh 目標(biāo)地址即可。默認(rèn)端口為22
1.查看SSH客戶端版本ssh -V 。
2. 指定登陸用戶ssh -l leni 192.168.0.103或者ssh leni@192.168.0.103。
3. 指定端口$ ssh 192.168.0.103 -p 1234。