2013-04-03 63 views
1

目前我通过telnet来回传输文件,我想一次发送多个文件。如何在没有tar的情况下netcat多个文件?

但是,我的目标平台(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脚本来完成。

回答

2

最后管理自己做到这一点,它可以做到!

Here $l>代表您的机器IP 192.168.0.10$e>是在没有焦油的嵌入式设备上完成的,在我的情况下是机器人。它使用能够复制整个磁盘的老式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,而其强度是其原始字节复制行为。

相关问题