[20130110]linux傳輸檔案-tar+nc+各種壓縮方式.txt
[20130110]linux傳輸檔案-tar+nc+各種壓縮方式.txt
以前在linux下傳輸檔案,特別一些大檔案以及很多小檔案,我個人經常喜歡tar+nc的傳輸方式。
實際上很簡單:
在A機器上執行:
tar -cvzf - /data/orcl/users01.dbf | nc -l 55555
在B機器上執行:
nc A_IP 55555 | tar xvzf - -C /tmp
--注意:-czf 後面有一個-,我曾經忘記寫,導致1個檔案破壞(切記!!!)。這樣解壓在B機器的/tmp目錄。
--也可以使用j引數替換z,這樣解壓縮採用bzip2.
--另外注意埠不要衝突(也就是沒有別的應用軟體不使用該埠)。
在A機器上執行:
tar -cvjf - /data/orcl.0000/users01.dbf | nc -l 55555
在B機器上執行:
nc A_IP 55555 | tar xvjf - -C /tmp
-- tar也可以指定別的壓縮程式(有一些新版本還支援lzop壓縮,我的測試centos 6.2)
-- -I, --use-compress-program=PROG
-- 使用lzop可以直接使用引數--lzop(好像一些版本沒有這個引數)
-- 另外注意一點gzip等壓縮工具,都是單執行緒的。如果壓縮並行,可以提高效率,找到pigz可以實現。
-- 我下載的rpm包。
tar -cvf - /tmp/data/orcl_20121108.bak/users01.dbf | pv -s `du -sb /tmp/data/orcl_20121108.bak/users01.dbf | awk '{s += $1} END {print s}'` | pigz |nc -l 55555
解壓:
nc A_IP 55555 | tar xvf - -C /tmp -I pigz
--為了獲得良好的顯示效果以及測試相關資料,必須安裝pv軟體包。執行如下:
tar -cvf - /tmp/data/orcl_20121108.bak/users01.dbf | pv -s `du -sb /tmp/data/orcl_20121108.bak/users01.dbf | awk '{s += $1} END {print s}'` | gzip |nc -l 55555
tar -cvf - /tmp/data/orcl_20121108.bak/users01.dbf | pv -s `du -sb /tmp/data/orcl_20121108.bak/users01.dbf | awk '{s += $1} END {print s}'` | bzip2 |nc -l 55555
tar -cvf - /tmp/data/orcl_20121108.bak/users01.dbf | pv -s `du -sb /tmp/data/orcl_20121108.bak/users01.dbf | awk '{s += $1} END {print s}'` | lzop |nc -l 55555
tar -cvf - /tmp/data/orcl_20121108.bak/users01.dbf | pv -s `du -sb /tmp/data/orcl_20121108.bak/users01.dbf | awk '{s += $1} END {print s}'` | pigz |nc -l 55555
--我的測試結果:[不是太精確,我僅僅做2次每種壓縮方式]
gzip 1.43GB 0:00:44 [32.6MB/s]
bzip2 1.43GB 0:02:52 [8.47MB/s]
lzop 1.43GB 0:00:25 [57.1MB/s]
pigz 1.43GB 0:00:10 [ 142MB/s]
-- 很明顯bzip2很慢,而pigz最好[注意:也許伺服器其他應用會受很大影響],我自己一直以為lzop感覺不明顯,實際上效果也不錯。
--這樣傳輸檔案還有一個缺點,要在兩個機器上執行相關命令,參考:
#! /bin/bash
FILE_FULL=$1
REMOTE_HOST=$2
FILE_DIR=$(dirname $FILE_FULL)
FILE_NAME=$(basename $FILE_FULL)
LOCALHOST=$(hostname)
ZIP_TOOL=pigz
NC_PORT=8888
tar -cf - -C $FILE_DIR $FILE_NAME | pv -s `du -sb $FILE_FULL | awk '{s += $1} END {printf "%d", s}'` | $ZIP_TOOL | nc -l $NC_PORT &
ssh $REMOTE_HOST "nc $LOCALHOST $NC_PORT | $ZIP_TOOL -d | tar xf - -C $FILE_DIR"
--寫這樣一個shell指令碼,命名ncp! ,執行如下:
ncp! /tmp/data/orcl_20121108.bak/users01.dbf remote_host
-- 注意一點:指令碼使用覆蓋方式,遠端的檔案[相同路徑的檔案將會覆蓋,並且這個目錄要存在,不然會報錯]將會覆蓋!使用要注意這點。
-- 而且我做了一些修改.而且主機名必須存在/etc/hosts檔案中,總之寫的不是太嚴謹,謹慎使用!
-- 如果有錯,可能要殺一些後臺程式。
我做一點小修改:
#! /bin/bash
FILE_FULL=$1
REMOTE_HOST=$2
FILE_DIR=$(dirname $FILE_FULL)
FILE_NAME=$(basename $FILE_FULL)
LOCALHOST=$(hostname)
ZIP_TOOL=pigz
NC_PORT=55555
tar -cf - -C $FILE_DIR $FILE_NAME | pv -s `du -sb $FILE_FULL | awk '{s += $1} END {printf "%d", s}'` | $ZIP_TOOL | nc -l $NC_PORT &
ssh $REMOTE_HOST "mkdir -p $FILE_DIR; [-e $FILE_FULL ] || nc $LOCALHOST $NC_PORT | $ZIP_TOOL -d | tar xvf - -C $FILE_DIR"
以前在linux下傳輸檔案,特別一些大檔案以及很多小檔案,我個人經常喜歡tar+nc的傳輸方式。
實際上很簡單:
在A機器上執行:
tar -cvzf - /data/orcl/users01.dbf | nc -l 55555
在B機器上執行:
nc A_IP 55555 | tar xvzf - -C /tmp
--注意:-czf 後面有一個-,我曾經忘記寫,導致1個檔案破壞(切記!!!)。這樣解壓在B機器的/tmp目錄。
--也可以使用j引數替換z,這樣解壓縮採用bzip2.
--另外注意埠不要衝突(也就是沒有別的應用軟體不使用該埠)。
在A機器上執行:
tar -cvjf - /data/orcl.0000/users01.dbf | nc -l 55555
在B機器上執行:
nc A_IP 55555 | tar xvjf - -C /tmp
-- tar也可以指定別的壓縮程式(有一些新版本還支援lzop壓縮,我的測試centos 6.2)
-- -I, --use-compress-program=PROG
-- 使用lzop可以直接使用引數--lzop(好像一些版本沒有這個引數)
-- 另外注意一點gzip等壓縮工具,都是單執行緒的。如果壓縮並行,可以提高效率,找到pigz可以實現。
-- 我下載的rpm包。
tar -cvf - /tmp/data/orcl_20121108.bak/users01.dbf | pv -s `du -sb /tmp/data/orcl_20121108.bak/users01.dbf | awk '{s += $1} END {print s}'` | pigz |nc -l 55555
解壓:
nc A_IP 55555 | tar xvf - -C /tmp -I pigz
--為了獲得良好的顯示效果以及測試相關資料,必須安裝pv軟體包。執行如下:
tar -cvf - /tmp/data/orcl_20121108.bak/users01.dbf | pv -s `du -sb /tmp/data/orcl_20121108.bak/users01.dbf | awk '{s += $1} END {print s}'` | gzip |nc -l 55555
tar -cvf - /tmp/data/orcl_20121108.bak/users01.dbf | pv -s `du -sb /tmp/data/orcl_20121108.bak/users01.dbf | awk '{s += $1} END {print s}'` | bzip2 |nc -l 55555
tar -cvf - /tmp/data/orcl_20121108.bak/users01.dbf | pv -s `du -sb /tmp/data/orcl_20121108.bak/users01.dbf | awk '{s += $1} END {print s}'` | lzop |nc -l 55555
tar -cvf - /tmp/data/orcl_20121108.bak/users01.dbf | pv -s `du -sb /tmp/data/orcl_20121108.bak/users01.dbf | awk '{s += $1} END {print s}'` | pigz |nc -l 55555
--我的測試結果:[不是太精確,我僅僅做2次每種壓縮方式]
gzip 1.43GB 0:00:44 [32.6MB/s]
bzip2 1.43GB 0:02:52 [8.47MB/s]
lzop 1.43GB 0:00:25 [57.1MB/s]
pigz 1.43GB 0:00:10 [ 142MB/s]
-- 很明顯bzip2很慢,而pigz最好[注意:也許伺服器其他應用會受很大影響],我自己一直以為lzop感覺不明顯,實際上效果也不錯。
--這樣傳輸檔案還有一個缺點,要在兩個機器上執行相關命令,參考:
#! /bin/bash
FILE_FULL=$1
REMOTE_HOST=$2
FILE_DIR=$(dirname $FILE_FULL)
FILE_NAME=$(basename $FILE_FULL)
LOCALHOST=$(hostname)
ZIP_TOOL=pigz
NC_PORT=8888
tar -cf - -C $FILE_DIR $FILE_NAME | pv -s `du -sb $FILE_FULL | awk '{s += $1} END {printf "%d", s}'` | $ZIP_TOOL | nc -l $NC_PORT &
ssh $REMOTE_HOST "nc $LOCALHOST $NC_PORT | $ZIP_TOOL -d | tar xf - -C $FILE_DIR"
--寫這樣一個shell指令碼,命名ncp! ,執行如下:
ncp! /tmp/data/orcl_20121108.bak/users01.dbf remote_host
-- 注意一點:指令碼使用覆蓋方式,遠端的檔案[相同路徑的檔案將會覆蓋,並且這個目錄要存在,不然會報錯]將會覆蓋!使用要注意這點。
-- 而且我做了一些修改.而且主機名必須存在/etc/hosts檔案中,總之寫的不是太嚴謹,謹慎使用!
-- 如果有錯,可能要殺一些後臺程式。
我做一點小修改:
#! /bin/bash
FILE_FULL=$1
REMOTE_HOST=$2
FILE_DIR=$(dirname $FILE_FULL)
FILE_NAME=$(basename $FILE_FULL)
LOCALHOST=$(hostname)
ZIP_TOOL=pigz
NC_PORT=55555
tar -cf - -C $FILE_DIR $FILE_NAME | pv -s `du -sb $FILE_FULL | awk '{s += $1} END {printf "%d", s}'` | $ZIP_TOOL | nc -l $NC_PORT &
ssh $REMOTE_HOST "mkdir -p $FILE_DIR; [-e $FILE_FULL ] || nc $LOCALHOST $NC_PORT | $ZIP_TOOL -d | tar xvf - -C $FILE_DIR"
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-752461/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux各種壓縮與解壓方法Linux
- 在 Linux 上壓縮檔案:zip 命令的各種變體及用法Linux
- Linux 檔案壓縮Linux
- Linux下各壓縮方式測試(壓縮率和使用時間)Linux
- Linux中檔案的壓縮和解壓縮Linux
- linux檔案壓縮和解壓命令Linux
- linux 壓縮分解檔案Linux
- Linux 檔案的壓縮Linux
- linux下的檔案的壓縮和解壓縮Linux
- 檔案壓縮和解壓縮
- Windows&Linux檔案傳輸方式總結WindowsLinux
- pclzip壓縮檔案和解壓的多種示例
- linux 下面壓縮、解壓.rar檔案Linux
- 檔案的壓縮與解壓縮zz--linuxLinux
- 大檔案如何傳輸,大檔案的傳輸方式有哪些?
- Linux 下常用的歸檔壓縮方式Linux
- 各種平臺解壓壓縮總結
- HttpGzipModule 網頁壓縮傳輸HTTP網頁
- HttpGzipStaticModule Nginx壓縮傳輸HTTPNginx
- Linux中檔案的壓縮與解壓縮(轉貼)Linux
- 短影片開發app,利用資料壓縮加速大檔案傳輸APP
- Linux下檔案的壓縮與解壓Linux
- Linux 檔案傳輸Linux
- windows傳輸至linux的壓縮--分包與解包WindowsLinux
- 檔案傳輸協議的五種安全檔案傳輸替代方案協議
- Linux科研武器庫 - 檔案壓縮與解壓縮 - zip / unzipLinux
- 幾種windows到linux上傳檔案的方式WindowsLinux
- linux的tar命令詳情;linux多個檔案壓縮打包到一個壓縮檔案Linux
- linux系統壓縮,解壓檔案筆記Linux筆記
- .NET 壓縮/解壓檔案
- 如何快速傳輸大檔案:4 種大檔案傳輸有效的方法
- Windows -> Linux 檔案傳輸WindowsLinux
- gulp壓縮檔案
- Java檔案壓縮Java
- java 檔案壓縮Java
- aix 檔案的壓縮與解壓縮AI
- 檔案上傳的幾種方式
- 如何壓縮PDF檔案大小?兩種好用方法