1. 程式人生 > >linux(6/17)--文件打包上傳和下載

linux(6/17)--文件打包上傳和下載

進入目錄 pre 啟動 spa 標準 gzip命令 let 修改時間 文字

tar命令

命令功能 用來壓縮和解壓文件
命令格式 tar[必要參數][選擇參數][文件]

tar打包工具

    -f      ##指定生成包的名字,建議 -f單獨寫成一個參數
    --delete filename   ##刪除包中指定文件
    --get filename      ##取出包中指定文件

   註:   -c -t -x 不能出現在同一串命令行中
tar -cf etc.tar /etc   ##生成歸檔包
tar -f etc.tar  --get file  
tar -f etc.tar  --delete file
tar -rf etc.tar file    ##添加文件到打包文件中

必要參數有如下:
-A 新增壓縮文件到已存在的壓縮
-B 設置區塊大小
-c 建立新的壓縮文件
-d 記錄文件的差別
-r 添加文件到已經壓縮的文件
-u 添加改變了和現有的文件到已經存在的壓縮文件
-p 保留原本文件屬性
-x 從壓縮的文件中提取文件
-t 顯示壓縮文件的內容
-z 支持gzip解壓文件
-j 支持bzip2解壓文件
-Z 支持compress解壓文件
-v 顯示操作過程
-l 文件系統邊界設置
-k 保留原有文件不覆蓋
-m 保留文件不被覆蓋
-W 確認壓縮文件的正確性
可選參數如下:
-b 設置區塊數目
-C 切換到指定目錄
-f 指定壓縮文件
–help 顯示幫助信息
–version 顯示版本信息
常用選項
-cvf 把文件全部打包成.tar包
實例 把log.log打包成log.tar
命令 tar -cvf log.tar log.log
-zcvf 把文件全部打包並壓縮成.tar.gz包(以gzip壓縮)
實例 把log.log打包成log.tar.gz
命令 tar -zcvf log.tar log.log
-jcvf 把文件全部打包並壓縮成.tar.bz2包(以bzip2壓縮)
實例 把log.log打包成log.tar.bz2
命令 tar -jcvf log.tar.bz2 log.log
-ztvf 查閱.tar.gz包裏面有哪些文件
實例 查閱log.tar.gz中有哪些文件
命令 tar -ztvf log.tar.gz
-zxvf 將.tar.gz解壓縮
實例 解壓縮log.tar.gz至當前目錄(可通過cd命令更改解壓縮位置)
命令 tar -zxvf opt/soft/test/log.tar.gz
實例 有選擇性解壓文件log.tar.gz中的test1.log
命令 tar zxvf opt/soft/test/log.tar.gz test1.log
-p 保留原本文件的屬性(包括最後修改時間,權限等信息)
實例 打包當前目錄(/tmp/test2)下的log1.log log2.log log3.log 為 log.tar.gz,並將其解壓到/tmp/test1文件夾下
命令1 tar zcvpf log.tar.gz log1.log log2.log log3.log
命令2 cd /tmp/test1
命令3 tar zxvpf /tmp/test2/log.tar.gz
命令4 ll(查看解壓後文件信息,發現和解壓前文件屬性相同)
-N 指定日期,比某個日期新才備份
實例 將test壓縮為log.tar.gz,日期舊於2016/12/7日的不備份
命令 tar -N “2016/12/7” -zcvf log.tar.gz test
–exclude 排除部分文件
實例 將scf下面所有文件備份,除了scf/service下的文件
命令 tar –exclude scf/service /zcvf scf.tar.gz scf/*

gzip命令

命令功能 使用廣泛的壓縮程序,壓縮後的文件後綴為.gz
命令格式 gzip[參數][文件或者目錄]
常用選項

-a或–ascii  使用ASCII文字模式。

-c或–stdout或–to-stdout  把壓縮後的文件輸出到標準輸出設備,不去更動原始文件。

-d或–decompress或—-uncompress  解開壓縮文件。
實例 將當前目錄下所有文件都解壓
命令 gzip -dv *

-f或–force  強行壓縮文件。不理會文件名稱或硬連接是否存在以及該文件是否為符號連接。

-l或–list  列出壓縮文件的相關信息。
實例 得到將當前目錄下所有壓縮文件的信息
命令 gzip -l *

-n或–no-name  壓縮文件時,不保存原來的文件名稱及時間戳記。

-N或–name  壓縮文件時,保存原來的文件名稱及時間戳記。

-q或–quiet  不顯示警告信息。

-r或–recursive  遞歸處理,將指定目錄下的所有文件及子目錄一並處理。
實例 壓縮一個tar備份文件
命令 gzip -r log.tar
實例 遞歸的壓縮目錄
命令 gzip -rv test6
實例 遞歸的解壓目錄
命令 gzip -dv test6

-S<壓縮字尾字符串>或—-suffix<壓縮字尾字符串>  更改壓縮字尾字符串。

-t或–test  測試壓縮文件是否正確無誤。

-v或–verbose  顯示指令執行過程。

-V或–version  顯示版本信息。

-num 用指定的數字num調整壓縮的速度,-1或–fast表示最快壓縮方法(低壓縮比),-9或–best表示最慢壓縮方法(高壓縮比)。系統缺省值為6

gzip xxxx.tar =====> xxxx.tar.gz    ##壓縮
gunzip  xxxx.tar.gz =====> xxxx.tar ##解壓
tar zcvf xxxx.tar.gz 目標文件       ##打包壓縮文件
tar zxvf xxxx.tar.gz            ###xxxx.tar.gz===>xxxx

bz2(壓縮比例最高)

bzip2 xxxx.tar =====> xxxx.tar.bz2  ##壓縮
bunzip2 xxxx.tar.bz2 =====> xxxx.tar    ##解壓
tar jcvf xxxx.tar.bz2 目標文件      ##打包壓縮文件
tar jxvf xxxx.tar.bz2           ###xxxx.tar.bz2===>xxxx

xz(//慢)

xz xxxx.tar =====> xxxx.tar.xz      ##壓縮
unxz xxxx.tar.xz =====> xxxx.tar    ##解壓
tar Jcvf xxxx.tar.xz    目標文件    ##打包壓縮文件
tar Jxvf xxxx.tar.xz                ###xxxx.tar.xz===>xxxx

前三種可以直接一步進行歸檔壓縮

zip(//與win兼容,必須將文件夾歸檔才可以進行壓縮)
zip -r xxx.tar.zip  xxx.tar     ###壓縮
unzip xxx.tar.zip           ###解壓

遠程文件復制共享

scp遠程復制

scp     file    user@ip:/directory      ##上傳文件
scp -r  dir user@ip:/directory          ##長傳目錄
scp     user@ip:/filename   /direcotry  ##下載文件
scp -r  user@ip:/directory  /direcotry  ##下載目錄

rsync遠程同步(同步體現在權限信息等的同步)

(若目錄後面添加/ 表示只拷貝文件夾裏面的內容不包括文件夾)

rsync file|direcotry user@ip:/directory (遠程發送)
rsync user@ip:/directory /directory (遠程復制)

參數選項:
    -r  ##同步目錄 (不加這個參數會直接跳過目錄,只會拷貝普通文件)
    -l  ##不忽略鏈接(默認忽略鏈接)
    -p  ##不忽略權限
    -t  ##不忽略時間戳
    -g  ##不忽略組信息
    -o  ##不忽略用戶信息
    -D  ##不忽略設備文件(權限 c b 開頭的文件)
    

範例一:將整個/etc目錄下的文件全部打包成為/tmp/etc.tar

[root@linux ~]# tar -cvf /tmp/etc.tar /etc <==僅打包,不壓縮!

[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包後,以gzip壓縮

[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包後,以bzip2壓縮

#特別註意,在參數f之後的文件檔名是自己取的,我們習慣上都用.tar來作為辨識。

#如果加z參數,則以.tar.gz或.tgz來代表gzip壓縮過的tar file~

#如果加j參數,則以.tar.bz2來作為附檔名啊~

#上述指令在執行的時候,會顯示一個警告訊息:

#『tar: Removing leading `/‘ from member names』那是關於絕對路徑的特殊設定。

範例二:查閱上述/tmp/etc.tar.gz文件內有哪些文件?

[root@linux ~]# tar -ztvf /tmp/etc.tar.gz

#由於我們使用gzip壓縮,所以要查閱該tar file內的文件時,

#就得要加上z這個參數了!這很重要的!

範例三:將/tmp/etc.tar.gz文件解壓縮在/usr/local/src底下

[root@linux ~]# cd /usr/local/src

[root@linux src]# tar -zxvf /tmp/etc.tar.gz

#在預設的情況下,我們可以將壓縮檔在任何地方解開的!以這個範例來說,

#我先將工作目錄變換到/usr/local/src底下,並且解開/tmp/etc.tar.gz,

#則解開的目錄會在/usr/local/src/etc呢!另外,如果您進入/usr/local/src/etc

#則會發現,該目錄下的文件屬性與/etc/可能會有所不同喔!

範例四:在/tmp底下,我只想要將/tmp/etc.tar.gz內的etc/passwd解開而已

[root@linux ~]# cd /tmp

[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd

#我可以透過tar -ztvf來查閱tarfile內的文件名稱,如果單只要一個文件,

#就可以透過這個方式來下達!註意到!etc.tar.gz內的根目錄/是被拿掉了!

範例五:將/etc/內的所有文件備份下來,並且保存其權限!

[root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc

#這個-p的屬性是很重要的,尤其是當您要保留原本文件的屬性時!

範例六:在/home當中,比2005/06/01新的文件才備份

[root@linux ~]# tar -N ‘2005/06/01‘ -zcvf home.tar.gz /home

範例七:我要備份/home, /etc,但不要/home/dmtsai

[root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

範例八:將/etc/打包後直接解開在/tmp底下,而不產生文件!

[root@linux ~]# cd /tmp

[root@linux tmp]# tar -cvf - /etc | tar -xvf -

#這個動作有點像是cp -r /etc /tmp啦~依舊是有其有用途的!

#要註意的地方在於輸出檔變成-而輸入檔也變成-,又有一個|存在~

#這分別代表standard output, standard input與管線命令啦!

tar -cvf log.tar log2012.log 僅打包,不壓縮!

tar -zcvf log.tar.gz log2012.log 打包後,以 gzip 壓縮

tar -zcvf log.tar.bz2 log2012.log 打包後,以 bzip2 壓縮

在參數 f 之後的文件檔名是自己取的,我們習慣上都用 .tar 來作為辨識。 如果加 z 參數,則以 .tar.gz 或 .tgz 來代表 gzip 壓縮過的 tar包; 如果加 j 參數,則以 .tar.bz2 來作為tar包名。

.bz
解壓1:bzip2 -d FileName.bz
解壓2:bunzip2 FileName.bz
壓縮:未知

.tar.bz
解壓:tar jxvf FileName.tar.bz
壓縮:未知

.Z
解壓:uncompress FileName.Z
壓縮:compress FileName

.tar.Z
解壓:tar Zxvf FileName.tar.Z
壓縮:tar Zcvf FileName.tar.Z DirName

.zip
解壓:unzip FileName.zip
壓縮:zip FileName.zip DirName

.rar
解壓:rar x FileName.rar
壓縮:rar a FileName.rar DirName

實例2:查閱上述 tar包內有哪些文件

命令:tar -ztvf log.tar.gz

實例5:文件備份下來,並且保存其權限

命令:tar -zcvpf log31.tar.gz log2014.log log2015.log log2016.log

實例6:在 文件夾當中,比某個日期新的文件才備份

命令:tar -N "2012/11/13" -zcvf log17.tar.gz test

實例7:備份文件夾內容是排除部分文件

命令:tar --exclude scf/service -zcvf scf.tar.gz scf/*

用SecureCRT來上傳和下載文件

用SSH管理linux服務器時經常需要遠程與本地之間交互文件.而直接用SecureCRT自帶的上傳下載功能無疑是最方便的,SecureCRT下的文件傳輸協議有ASCII、Xmodem、Zmodem。
文件傳輸協議:
文件傳輸是數據交換的主要形式。在進行文件傳輸時,為使文件能被正確識別和傳送,我們需要在兩臺計算機之間建立統一的傳輸協議。這個協議包括了文件的識別、傳送的起止時間、錯誤的判斷與糾正等內容。常見的傳輸協議有以下幾種:
ASCII:這是最快的傳輸協議,但只能傳送文本文件。
Xmodem:這種古老的傳輸協議速度較慢,但由於使用了CRC錯誤偵測方法,傳輸的準確率可高達99.6%。
Ymodem:這是Xmodem的改良版,使用了1024位區段傳送,速度比Xmodem要快
Zmodem:Zmodem采用了串流式(streaming)傳輸方式,傳輸速度較快,而且還具有自動改變區段大小和斷點續傳、快速錯誤偵測等功能。這是目前最流行的文件傳輸協議。
除以上幾種外,還有Imodem、Jmodem、Bimodem、Kermit、Lynx等協議,由於沒有多數廠商支持,這裏就略去不講。

SecureCRT可以使用linux下的zmodem協議來快速的傳送文件,使用非常方便.具體步驟:

一.在使用SecureCRT上傳下載之前需要給服務器安裝lrzsz:

1、從下面的地址下載 lrzsz-0.12.20.tar.gz

http://down1.chinaunix.net/distfiles/lrzsz-0.12.20.tar.gz

2、查看裏面的INSTALL文檔了解安裝參數說明和細節

3、解壓文件

tar zxvf lrzsz-0.12.20.tar.gz

4、進入目錄

cd lrzsz-0.12.20

5、./configure --prefix=/usr/local/lrzsz

6、make

7、make install

8、建立軟鏈接

#cd /usr/bin

#ln -s /usr/local/lrzsz/bin/lrz rz

#ln -s /usr/local/lrzsz/bin/lsz sz

9、測試

運行 rz 彈出SecureCRT上傳窗口,用SecureCRT來上傳和下載文件。

二.設置SecureCRT上傳和下載的默認目錄就行

options->session options ->Terminal->Xmodem/Zmodem 下
在右欄directory設置上傳和下載的目錄

三.使用Zmodem從客戶端上傳文件到linux服務器

1.在用SecureCRT登陸linux終端.
2.選中你要放置上傳文件的路徑,在目錄下然後輸入rz命令,SecureCRT會彈出文件選擇對話框,在查找範圍中找到你要上傳的文件,按Add按鈕。然後OK就可以把文件上傳到linux上了。
或者在Transfer->Zmodem Upoad list彈出文件選擇對話框,選好文件後按Add按鈕。然後OK窗口自動關閉。然後在linux下選中存放文件的目錄,輸入rz命令。liunx就把那個文件上傳到這個目錄下了。

四.使用Zmodem下載文件到客戶端:
sz filename
zmodem接收可以自行啟動.下載的文件存放在你設定的默認下載目錄下.


rz,sz是Linux/Unix同Windows進行ZModem文件傳輸的命令行工具windows端需要支持ZModem的telnet/ssh客戶端,SecureCRT就可以用SecureCRT登陸到Unix/Linux主機(telnet或ssh均可)O 運行命令rz,即是接收文件,SecureCRT就會彈出文件選擇對話框,選好文件之後關閉對話框,文件就會上傳到當前目錄 O 運行命令sz file1 file2就是發文件到windows上(保存的目錄是可以配置) 比ftp命令方便多了,而且服務器不用再開FTP服務了

linux(6/17)--文件打包上傳和下載