[20130110]linux传输文件-tar+nc+各种压缩方式.txt

简介: [20130110]linux传输文件-tar+nc+各种压缩方式.txt以前在linux下传输文件,特别一些大文件以及很多小文件,我个人经常喜欢tar+nc的传输方式。
[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包。 http://pkgs.repoforge.org/pigz/

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感觉不明显,实际上效果也不错。

--这样传输文件还有一个缺点,要在两个机器上执行相关命令,参考:
http://intermediatesql.com/wp-content/uploads/2012/05/ncp.txt
http://intermediatesql.com/linux/scrap-the-scp-how-to-copy-data-fast-using-pigz-and-nc/

#! /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"


目录
相关文章
|
13天前
|
Linux
linux中查看某个文件夹下文件的个数和大小
这篇文章介绍了在Linux系统中使用各种命令(如`stat`、`wc`、`du`和`ls`)来查看文件夹下文件的个数和大小的方法。
62 4
linux中查看某个文件夹下文件的个数和大小
|
2月前
|
Linux
Linux下使用ls查看文件颜色全部为白色的解决方法,以及Linux中文件颜色介绍
Linux下使用ls查看文件颜色全部为白色的解决方法,以及Linux中文件颜色介绍
109 2
|
8天前
|
安全 Linux 数据安全/隐私保护
探索Linux操作系统的文件权限管理
【9月更文挑战第29天】在数字世界中,文件权限管理如同保护我们隐私的锁。本文将带你了解如何在Linux系统中设置和管理文件权限,确保你的数据安全。我们将一起学习如何通过命令行工具来控制文件访问,就像学习一门新语言一样有趣。准备好了吗?让我们一起开启这场技术之旅!
|
10天前
|
Linux
深入理解Linux中的cp命令:文件与目录的复制利器
深入理解Linux中的cp命令:文件与目录的复制利器
|
10天前
|
Linux Shell
10-9|linux上统计文件中单词次数
10-9|linux上统计文件中单词次数
|
11天前
|
存储 Linux Shell
常用vim命令和vim基本使用及Linux用户的管理,用户和组相关文件
这篇文章介绍了Vim编辑器的基本使用、常用命令和模式,以及Linux系统中用户和组的管理方法,包括用户和组相关文件如/etc/passwd、/etc/shadow和/etc/group的说明。
常用vim命令和vim基本使用及Linux用户的管理,用户和组相关文件
|
2月前
|
Linux
Linux 服务器下载百度网盘文件
本教程指导如何使用 `bypy` 库从百度网盘下载文件。首先通过 `pip install bypy` 安装库,接着运行 `bypy info` 获取登录链接并完成授权,最后将文件置于指定目录并通过 `bypy downdir /Ziya-13b-v1` 命令下载至本地。
41 1
Linux 服务器下载百度网盘文件
|
1月前
|
Ubuntu Linux Shell
Linux系统命令 安装和文件相关命令
本文档详细介绍了Linux系统中的常用命令,包括软件安装卸载命令如`dpkg`和`apt-get`,压缩与解压命令如`gzip`、`bzip2`和`xz`,以及`tar`命令用于打包和解包。此外还介绍了文件分割命令`split`,文件操作命令如`cat`、`head`、`tail`、`more`、`less`等,管道命令和`wc`、`grep`、`find`、`cut`、`sort`、`uniq`、`diff`等实用工具。最后,文档还讲解了文件属性相关的命令如`chmod`、`chown`、`chgrp`以及创建硬链接和软链接的`ln`命令。
|
2月前
|
JavaScript Linux
Linux中和文件相关的操作
Linux中和文件相关的操作
32 0
|
2月前
|
Linux
Linux0.11 文件打开open函数(五)
Linux0.11 文件打开open函数(五)
38 0
下一篇
无影云桌面