linux(6/17)--文件打包上傳和下載
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)--文件打包上傳和下載