如何在没有tar的情况下netcat多个文件?

时间:2013-04-03 09:26:05

标签: tar file-transfer netcat

目前我通过telnet来回传输文件,我想一次发送多个文件。

但是,我的目标平台(Blackfin处理器)在其内核/ busybox配置(uClinux发行版)中没有启用“tar”。

众所周知,正常的命令是:

nc -p 12345 -l | tar -x
tar -c * | nc 192.168.0.100 12345 # with x.100 the robot IP address

如何使用netcat 发送多个文件而不使用tar

请注意,我无法在平台上轻松添加二进制文件。最好使用基本实用程序和/或shell脚本。

1 个答案:

答案 0 :(得分:4)

最后我自己做了这件事,可以做到!

此处$l>代表您的机器IP 192.168.0.10。并且$e>在没有tar的嵌入式设备上完成,在我的例子中是机器人。它使用了能够复制整个磁盘的老式dd

$l> nc -p 12345 -l | dd obs=4K of=/tmp/file.jffs2
$e> dd ibs=4K if=/dev/mtdblock2 | nc 192.168.0.10 12345

就是这样,但是因为不是每个人都知道如何读取这种形式的文件系统,所以这就是你如何安装它:

file /tmp/file.jffs2
  /tmp/file.jffs2: Linux jffs2 filesystem data little endian
sudo su     #careful
mknod /tmp/mtdblock0 b 31 0
modprobe loop
losetup /dev/loop0 /tmp/file.jffs2
modprobe mtdblock
modprobe block2mtd
echo "/dev/loop0,128KiB" > /sys/module/block2mtd/parameters/block2mtd
modprobe jffs2
mkdir /media/robot
mount -t jffs2 /tmp/mtdblock0 /media/robot
Ctrl-D  #back as normal user

是的,你需要环回设备,否则:

sudo mount -t jffs2 /tmp/file.jffs2 /media/robot
  mount: /tmp/file.jffs2 is not a block device (maybe try `-o loop'?)

逻辑上,它是一个文件(字符),而不是块设备。我唯一不知道的是,dd是否存在嵌入式设备上的命令的语法,只能选择要包含的文件系统的子集。我不认为这可能是因为这需要dd来理解jffs2,而其强度是其原始字节复制行为。